3 回答

TA貢獻1796條經(jīng)驗 獲得超4個贊
好了,您可以編寫一個循環(huán):
public static void replaceAll(StringBuilder builder, String from, String to)
{
int index = builder.indexOf(from);
while (index != -1)
{
builder.replace(index, index + from.length(), to);
index += to.length(); // Move to the end of the replacement
index = builder.indexOf(from, index);
}
}
請注意,在某些情況下lastIndexOf,從背面使用它可能會更快。我懷疑是用短字符串替換長字符串的情況-因此,從一開始,任何替換副本的復(fù)制量都會減少。無論如何,這應(yīng)該給您一個起點。

TA貢獻1811條經(jīng)驗 獲得超4個贊
您可以使用模式 / 匹配器。從Matcher javadocs:
Pattern p = Pattern.compile("cat");
Matcher m = p.matcher("one cat two cats in the yard");
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, "dog");
}
m.appendTail(sb);
System.out.println(sb.toString());

TA貢獻1775條經(jīng)驗 獲得超11個贊
查看String類的replaceAll方法的JavaDoc :
用給定的替換項替換該字符串中與給定的正則表達式匹配的每個子字符串。以str.replaceAll(regex,repl)形式調(diào)用此方法,其結(jié)果與表達式完全相同
java.util.regex.Pattern.compile(regex).matcher(str).replaceAll(repl)
如您所見,您可以使用Pattern和Matcher來做到這一點。
添加回答
舉報