我有一个从输入字段收到的字符串值。
String searchingText = getText();
收到字符串后,我搜索此字符串。但如果字符串包含\
符号,则我的搜索失败。
我知道特殊字符并尝试替换:
searchingText = searchingText.replaceAll("\\","\\\\");
但是它给了我错误,应用程序被关闭了。
Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
经过研究,我创建了一个正则表达式,并尝试用匹配器替换:
Map<String,String> sub = new HashMap<String,String>();
sub.put("\n", "\\\\n");
sub.put("\r", "\\\\r");
sub.put("\t", "\\\\t");
StringBuffer result = new StringBuffer();
Pattern regex = Pattern.compile("\\n|\\r|\\t");
Matcher matcher = regex.matcher(bodySearchText);
最后我想要一个字符串 - searchingText = \\
而不是searchingText = \
请任何解决方案。
答案 0 :(得分:2)
你应该这样做:
string = string.replaceAll("\\\\", "\\\\\\\\");
请注意,在Java中,\
被写为\\
。因此replaceAll
会将\\
视为\
,这不是您想要的。
相反,您可以使用接受String而不是正则表达式的replace
。
答案 1 :(得分:0)
更改此
searchingText = searchingText.replaceAll("\\","\\\\");
到
searchingText = searchingText.replaceAll("\\\\","\\\\\\");
replaceAll()
将\\
作为\
。
有关详细信息,请参阅here