计算用replaceFirst和StringUtils.countMatches替换的数量

时间:2016-05-21 15:56:23

标签: java replace count

我正在尝试将字符串结果中的所有“n”替换为“normal”。而且我想算一下有多少被替换

enter image description here

我尝试了在stackoverflow上找到的两种不同的方法,但似乎都不起作用。

使用replaceFirst的方法1:

while (!result.replaceFirst(" n", " normal").equals(result)) {
            result = result.replaceFirst(" n", " normal");
            normal++;
        }

它给了我一个无限循环。

第二种方法我尝试使用StringUtils:

normal = StringUtils.countMatches(" n", " normal");

但是它将countMatches强调为红色并且不起作用

1 个答案:

答案 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);