如何替换字符串中第n个字符的发生?
问题描述:
我需要替换第五个之后的所有逗号。所以如果一个String包含10个commans,我只想留下前5个,并且删除所有随后的逗号。如何替换字符串中第n个字符的发生?
我该怎么做?
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);
这工作,但正则表达式是真的不适合工作的工具在这里。它们是通常只有原作者才能理解的缓慢,难看的代码,并且很容易让它们稍微错误。 – cderwin
作为魅力!不知道为什么和如何,但它完成了工作,谢谢 – Emily
@cderwin如果它很丑,那么为什么所有的语言都添加它.. –