如果源字符串包含模式,则将其替换为某些内容或将其删除。一种方法是做这样的事情
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(sourceString);
while(m.find()){
String subStr = m.group().replaceAll('something',""); // remove the pattern sequence
String strPart1 = sourceString.subString(0,m.start());
String strPart2 = sourceString.subString(m.start()+1);
String resultingStr = strPart1+subStr+strPart2;
p.matcher(...);
}
但我想要这样的东西
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(sourceString);
while(m.find()){
m.group.replaceAll(...);// change the group and it is source string is automatically updated
}
这可能吗?
由于
答案 0 :(得分:9)
// change the group and it is source string is automatically updated
没有办法改变Java中的任何字符串,所以你要求的是不可能的。
删除或替换带有字符串的模式可以通过类似
的调用来实现someString = someString.replaceAll(toReplace, replacement);
转换匹配的子字符串,似乎由您的行
表示m.group().replaceAll("something","");
最好的解决方案可能是使用
StringBuffer
和Matcher.appendReplacement
。示例:
Matcher.appendTail
答案 1 :(得分:2)
假设您要替换特定模式的所有匹配项,请尝试以下操作:
String source = "aabbaabbaabbaa";
String result = source.replaceAll("aa", "xx"); //results in xxbbxxbbxxbbxx
删除模式将是:
String result = source.replaceAll("aa", ""); //results in bbbbbb