gpt4 book ai didi

java - 使用 Java+regex,我想在字符串中查找重复字符,并将该子字符串替换为找到的字符和找到它的次数

转载 作者:行者123 更新时间:2023-11-29 08:35:24 24 4
gpt4 key购买 nike

样本

String str = "fghhhhjkjkljhdd"

我需要将它转换成输出字符串“fgh4jkjkljhd2”

我有以下代码,但这里的问题是我只匹配了一次 - “hhhh”。我仍然缺少“dd”。一旦解决了这个问题,我就可以考虑如何将匹配项分配给一个字符串并计算那里的字符数,但现在我无法获得多个匹配项。感谢任何指点。

    String str = "fghhhhjkjkljhdd";
Pattern p = Pattern.compile("(\\w)\\1+");
Matcher m = p.matcher(str);
if (m.find()) System.out.println(m.group());

最佳答案

您可以使用捕获组包装量化的反向引用,以便稍后能够访问该值,并使用 Matcher#appendReplacement 实际修改字符串中的匹配项:

String text = "fghhhhjkjkljhdd";
String regex = "(\\w)(\\1+)";
Pattern r = Pattern.compile(regex);
Matcher m = r.matcher(text);
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, m.group(1) + (m.group(2).length()+1));
}
m.appendTail(sb);
System.out.println(sb); // => fgh4jkjkljhd2

参见 Java demo .

关于java - 使用 Java+regex,我想在字符串中查找重复字符,并将该子字符串替换为找到的字符和找到它的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44450597/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com