目前,replaceAll
类的String
方法以及Matcher.replaceAll
方法将其参数评估为正则表达式。
我遇到的问题是我传递给这些方法中的任何一个的替换字符串都包含一个美元符号(当然在正则表达式中有特殊含义)。一个简单的解决方法是将我的替换字符串传递给'Matcher.quoteReplacement',因为这会生成一个带有文字字符的字符串,然后将此已清理的字符串传递给replaceAll
。< / p>
不幸的是,我无法执行上述操作,因为我需要保留特殊字符,因为后来在预期使用reg ex的操作中使用了结果字符串,如果我已经转义了所有特殊字符,那么这将破坏该合同
有人可以建议我可以实现我想做的事情吗?非常感谢。
编辑:有关更清楚的解释,请在下面找到代码示例:
String key = "USD";
String value = "$";
String content = "The figure is in USD";
String contentAfterReplacement;
contentAfterReplacement = content.replaceAll(key, value); //will throw an exception as it will evaluate the $ in 'value' variable as special regex character
contentAfterReplacement = content.replaceAll(key, Matcher.quoteReplacement(value)); //Can't do this as contentAfterReplacement is passed on and later parsed as a regex (Ie, it can't have special characters escaped).