我正在尝试将字符串结果中的所有“n”替换为“normal”。而且我想算一下有多少被替换
我尝试了在stackoverflow上找到的两种不同的方法,但似乎都不起作用。
使用replaceFirst的方法1:
while (!result.replaceFirst(" n", " normal").equals(result)) {
result = result.replaceFirst(" n", " normal");
normal++;
}
它给了我一个无限循环。
第二种方法我尝试使用StringUtils:
normal = StringUtils.countMatches(" n", " normal");
但是它将countMatches强调为红色并且不起作用
答案 0 :(得分:1)
第一个例程进入无限循环的原因是因为你正在替换循环中的字符串,并且每个替换都会添加另一个" n"进入字符串。你应该进行计数和单独更换:
String s = "abc n def n ghi n";
int count = 0;
for( int i=0; i < s.length(); i++ ) {
if( s.charAt(i) == 'n' ) {
count++;
}
}
s=s.replaceAll("n", "normal");
System.out.println(s);