我该怎么办?我做了一个研究,但我找不到一个明确的答案。我试着用
pass = pass.replaceAll("$", "\\$");
但它不起作用。
答案 0 :(得分:4)
使用
pass = pass.replace("$", "\\$");
它也将替换所有事件。请参阅JavaDoc。
如果您喜欢艰难的方式并且想要使用正则表达式,则需要:
pass = pass.replaceAll("\\$", "\\\\\\$");
这可以通过Matcher.quoteReplacement()
进行简化,但仍需要在需要替换与正则表达式匹配的内容时使用replaceAll()
,并在必须替换文字序列时使用replace()
答案 1 :(得分:0)
问题是String.replaceAll
使用正则表达式,其中\
和$
都有特殊含义。据我所知,你不想要它 - 你只想逐字替换字符串。因此,您应该使用String.replace
:
pass = pass.replace("$", "\\$");
(我个人认为replaceAll
使用正则表达式这一事实是一个设计错误,但这是另一回事。)