我有一个基本字符串"abc def"
,我正在尝试使用"abc$ def$"
替换我的基本字符串replaceFirst()
,因为$
未转义而遇到错误。
我尝试使用Pattern和Matcher API,如下所示,
newValue = "abc$ def$";
if(newValue.contains("$")){
Pattern specialCharacters = Pattern.compile("$");
Matcher newMatcherValue = specialCharacters.matcher(newValue) ;
newValue = newMatcherValue.replaceAll("\\\\$") ;
}
这会遇到错误。有没有优雅的方法用"abc$ def$"
替换我的第二个字符串"abc\\\\$ def\\\\$"
,以便成功使用replacefirst()
API?
答案 0 :(得分:0)
请Pattern.quote()
引用正则表达式,Matcher.quoteReplacement()
引用替换字符串。
那就是说,这会做你想要的吗?
System.out.println("abc def".replaceAll("([\\w]+)\\b", "$1\\$"));
打印出abc$ def$
答案 1 :(得分:0)
您只需一步即可使用replaceAll:
String newValueScaped = newValue.replaceAll("\\$", "\\\\$")
$ 在正则表达式中有一个特殊的挖掘,所以你需要对其进行挖掘。它用于匹配数据的结尾。