我该怎么做?我进行了研究,但找不到明确的答案。我尝试使用
pass = pass.replaceAll("$", "\\$");
但它不起作用。
利用
pass = pass.replace("$", "\\$");
它还将替换所有出现的事件。请参阅JavaDoc。
如果您更喜欢硬方法并想使用正则表达式,则需要:
pass = pass.replaceAll("\\$", "\\\\\\$");
这可以简化为,Matcher.quoteReplacement()但仅replaceAll()在需要替换与正则表达式匹配的内容时使用,并replace()在必须替换文字序列时使用。
问题是String.replaceAll使用正则表达式,两者\都有$特殊含义。据我所知,您不希望这样-您只想逐字替换字符串。因此,您应该使用String.replace:
pass = pass.replace("$", "\\$");
(我个人认为replaceAll使用正则表达式是一个设计错误,但这是另一回事。)