長い文字列内の特定の単語を置き換えようとしています。何が起こるかというと、同じままの単語と変化する単語があります。変更されない単語は、同じままであるはずの単語に対してmatcher
同じアクションを実行しようとし続けるため、無限ループに陥っているように見えます。以下は私のものと似た例です - 私が使用している正確なコードを配置することはできませんでした.
public String test() {
String temp = "<p><img src=\"logo.jpg\"/></p>\n<p>CANT TOUCH THIS!</p>";
Pattern pattern = Pattern.compile("(<p(\\s.+)?>(.+)?</p>)");
Matcher matcher = pattern.matcher(temp);
StringBuilder stringBuilder = new StringBuilder(temp);
int start;
int end;
String match;
while (matcher.find()) {
start = matcher.start();
end = matcher.end();
match = temp.substring(start, end);
stringBuilder.replace(start, end, changeWords(match));
temp = stringBuilder.toString();
matcher = pattern.matcher(temp);
System.out.println("This is the word I'm getting stuck on: " + match);
}
return temp;
}
public String changeWords(String words) {
return "<p><img src=\"logo.jpg\"/></p>";
}
なぜこれが起こっているのかについての提案はありますか?