2

我有一个字符串

“棕狐@jumped@ 越过@fence@”

,我希望'@'用' kicked'替换两个之间的所有子字符串,即最终输出应该是:

“棕狐一脚踹翻”

我写了以下内容,但无法弄清楚错误:

string.replaceAll("^@.*@$", "kicked");
4

1 回答 1

9

你不应该使用锚元素^$. 它们表示整个输入的开头和结尾,而不是单词的开头和结尾。您还应该.[^@](意思是“除”之外的任何东西@)替换点,以使您的表达更有效率。

string.replaceAll("@[^@]*@", "kicked");

如果您想避免替换单词中的标记元素,例如,如果您想按原样保留he@ll@o,而不是制作它,您可以在表达式的两端hekikkedo放置单词边界标记:\b

string.replaceAll("\\b@[^@]*@\\b", "kicked");
于 2012-10-16T14:40:09.830 回答