2011-07-12 84 views
2

我试图用更换一个字符串的“^”字符:替换“^”字符

String text = text.replaceAll("^", "put this text"); 

如果文本以下值:

"x^my string" 

生成的字符串是:

"put this textx^my string" 

这只是发生在^字符的情况下

这是为什么?

+2

你读过Javadoc吗?你知道正则表达式是什么吗? –

+0

有时候更好地测试这个显而易见的... 对不起主所有威武 – RedEagle

+0

这不像我记得方法的细节 - 我不得不查看它,就像你可以拥有。当他们可能回答那些难以让海报自己回答的问题时,要求其他人为你阅读文档是很烦人的。 –

回答

9

的JavaDoc只需使用非正则表达式版本的String.replace()代替String.replaceAll()

text = text.replace("^", "put this text"); 
+0

如果你不需要正则表达式不要使用replaceAll – rascio

5

replaceAll预计将正则表达式作为第一个参数。你需要逃避它:

text = text.replaceAll("\\^", "put this text"); 

至于为什么,在^ expreg在解析字符串的开头空字符串相匹配。然后,replaceAllput this text替换此空字符串。实际上,它与在原始字符串的开头放置put this text类似。

1

^表示正则表达式中一行的开始。您需要转义它:

String text = text.replaceAll("\\^", "put this text"); 
0

^指示字符串的开始。

0

^是一个正则表达式字符,它匹配开始的一个字符串。你需要逃避它喜欢:

text = text.replaceAll("\\^", "put this text"); 

细节上的java.util.regex.Pattern

0

符号^开始匹配一条线。如果你想匹配caracter ^你必须逃脱它

String text = text.replaceAll("\^", "put this text");