Java 如何替换字符串中出现的第n个字符?
我需要替换第五个逗号之后的所有逗号。因此,如果一个字符串包含10个逗号,我只想保留前5个,并删除所有后续的逗号 我该怎么做Java 如何替换字符串中出现的第n个字符?,java,regex,Java,Regex,我需要替换第五个逗号之后的所有逗号。因此,如果一个字符串包含10个逗号,我只想保留前5个,并删除所有后续的逗号 我该怎么做 String sentence = "Test,test,test,test,test,test,test,test"; String newSentence = sentence.replaceAll(",[6]",""); 只需捕获从开始到第5个逗号的所有字符,并使用交替运算符|匹配所有剩余的逗号即可。所以,之后的|应该匹配所有剩余的逗号。通过将所有匹配的字符替换
String sentence = "Test,test,test,test,test,test,test,test";
String newSentence = sentence.replaceAll(",[6]","");
只需捕获从开始到第5个逗号的所有字符,并使用交替运算符
|
匹配所有剩余的逗号即可。所以,
之后的|
应该匹配所有剩余的逗号。通过将所有匹配的字符替换为$1
将为您提供所需的输出
sentence.replaceAll("^((?:[^,]*,){5})|,", "$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);