如何替换字符串中第n个字符的出现?

时间:2016-01-21 17:39:19

标签: java regex

我需要在第5个之后替换所有逗号。因此,如果一个String包含10个commans,我想只留下前5个,并删除所有后续逗号。

我该怎么做?

String sentence = "Test,test,test,test,test,test,test,test"; 
String newSentence = sentence.replaceAll(",[6]",""); 

2 个答案:

答案 0 :(得分:6)

只需捕获从开头到第五个逗号的所有字符,并使用交替运算符|匹配所有剩余的逗号。因此,之后的|应与所有剩余的逗号匹配。将所有匹配的字符替换为$1将为您提供所需的输出。

sentence.replaceAll("^((?:[^,]*,){5})|,", "$1");

DEMO

答案 1 :(得分:1)

如果您想知道如何在不使用正则表达式的情况下解决此问题...有些库可以让您的生活更轻松,但这是我想到的第一个想法。

public String replaceSpecificCharAfter( String input, char find, int deleteAfter){

    char[] inputArray = input.toCharArray();
    String output = ""; 
    int count = 0;

    for(int i=0; i <inputArray.length; i++){
        char letter = inputArray[i];
        if(letter == find){
            count++;
            if (count <= deleteAfter){
                 output += letter;
            }
         }
         else{
             output += letter;
         }
    }

    return output;
}

然后你会调用这样的函数:

String sentence = "Test,test,test,test,test,test,test,test"; 
String newSentence = replaceSpecificCharAfter(sentence, ',', 6);