我有以下字符串
String str = "replace :) :) with some other string";
我想用其他字符串
替换:)
的第一次出现
我使用了str.replaceFirst(":)","hi");
它提供以下异常
“无与伦比的结束”)'“
我尝试使用replace
函数,但它取代了:)
的所有出现。
答案 0 :(得分:10)
replaceFirst
方法将正则表达式作为其第一个参数。由于)
是正则表达式中的特殊字符,因此必须引用它。尝试:
str.replaceFirst(":\\)", "hi");
需要双反斜杠,因为双引号字符串也使用反斜杠作为引号字符。
答案 1 :(得分:5)
replaceFirst()的第一个参数是一个正则表达式,而不仅仅是一个字符序列。在正则表达式中,parantheses具有特殊意义。你应该像这样逃避这个副词:
str = str.replaceFirst(":\\)", "hi");
答案 2 :(得分:1)
Apache Jakarta Commons通常是解决这类问题的方法。在这种情况下,我会看一下commons-lang,特别是StringUtils.replaceOnce()。