java—通过replaceall用字符序列“\\\\\”替换字符串中的空白

deikduxw  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(397)

这个问题在这里已经有答案了

用双反斜杠替换所有单反斜杠(5个答案)
昨天关门了。
我需要将字符串中的空白替换为 \\ \\ 或者您可以说,我需要用双反斜杠将空格括起来,以便通过java代码对cassandra运行solr search查询。
但是我在用两个反斜杠括空格时出错了。

@Test
    void testEscapeWhiteSpace_WhenPresent_ThenEscape(){
        String testWord = "test it";
        assertEquals("test\\ \\it",MyUtils.escapeWhiteSpacesForSearch(testWord));
    }

    public static String escapeWhiteSpacesForSearch(String testWord) {
        return StringUtils.isEmpty(testWord)
                ?testWord
                :testWord.replaceAll(" ", "\\ \\");
    }

这是我得到的例外。我试着换衣服 replaceAll(" ")"\\s" 或者 "\\s+" 为什么replaceall不能识别这些字符呢

java.lang.IllegalArgumentException: character to be escaped is missing
    at java.util.regex.Matcher.appendReplacement(Matcher.java:820)
    at java.util.regex.Matcher.replaceAll(Matcher.java:966)
    at java.lang.String.replaceAll(String.java:3545)
    at com....util.MyUtils.escapeWhiteSpacesForSearch(MyUtils.java:194)
qv7cva1a

qv7cva1a1#

"\\ \\" 逃逸 \ 对于java。你还需要为regex逃走- "\\\\ \\\\"

相关问题