2008-11-18 134 views
1

我有以下字符串字符串替换功能

String str = "replace :) :) with some other string"; 

我想替换的:)第一次出现与其他一些字符串

而且我用str.replaceFirst(":)","hi");

它提供了以下异常

“无与伦比的关闭”)“”

我试过用replace函数,但是它取代了所有的:)

回答

10

replaceFirst方法将正则表达式作为其第一个参数。由于)是正则表达式中的特殊字符,因此您必须引用它。请尝试:

str.replaceFirst(":\\)", "hi"); 

需要双反斜杠,因为双引号字符串也使用反斜杠作为引号字符。

+0

我想也是用这个,但它抛出同样的异常...... – user25778 2008-11-18 09:26:58

5

replaceFirst()的第一个参数是一个正则表达式,而不仅仅是一个字符序列。在正则表达式中,缺口具有特殊意义。你应该逃避paranthesis这样的:

str = str.replaceFirst(":\\)", "hi");