3

我有一个从输入字段接收到的字符串值。

String searchingText = getText();

在我收到一个字符串后,我搜索这个字符串。但是如果字符串包含\符号我的搜索失败。

我知道特殊字符并尝试替换:

searchingText = searchingText.replaceAll("\\","\\\\");

但这给了我错误,应用程序已关闭。

Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1

经过研究,我建立了一个正则表达式并尝试用 matcher 替换:

    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 = \

请任何解决方案。

4

2 回答 2

2

你应该做:

string = string.replaceAll("\\\\", "\\\\\\\\");

请注意,在 Java 中,\写为\\. 所以replaceAll会看到\\\这不是你想要的。

相反,您可以使用replace接受字符串而不是正则表达式。

于 2013-11-07T12:37:22.453 回答
0

改变这个

searchingText = searchingText.replaceAll("\\","\\\\");

searchingText = searchingText.replaceAll("\\\\","\\\\\\");

replaceAll()\\作为\。_

有关更多详细信息,请阅读此处

于 2013-11-07T12:49:44.493 回答