我有一个由n个相等的子串组成的字符串。例如,字符串"hellooo dddd"
有3个"dd"
子字符串(我说它已经发生了3次)。在一个更一般的情况下,我们在字符串中有n个相等的子字符串,如何替换字符串中的第i个出现。 A,类似replace()
的方法,用于第i个子串。我想在我的android代码中实现它。 (英语不是我的第一语言,所以请原谅任何错误。)。
答案 0 :(得分:1)
public static String replace(String input, String pattern, int occurence, String replacement){
String result = input;
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(result);
if(occurence == 0){
return result;
} else if(occurence == 1){
m.find();
result = result.substring(0,m.start()) + replacement + result.substring(m.end());
} else {
m.find();
int counter = 1;
try {
while((counter<occurence)&&m.find(m.start()+1)){
counter++;
}
result = result.substring(0,m.start()) + replacement + result.substring(m.end());
} catch(IllegalStateException ise){
throw new IllegalArgumentException("There are not this many occurences of the pattern in the String.");
}
}
return result;
}
如果我理解正确的话,似乎会做你想要的事情。
使用匹配器/模式系统,可以使用更复杂的正则表达式。