是否有更简单的方法在特殊字符前加上\
例如:

String result = subjectString.replaceAll("\\}", "\\\\\\}").replaceAll("\\{", "\\\\\\{").replaceAll("\\&", "\\\\\\&")
                .replaceAll("=", "\\\\=").replaceAll(",", "\\\\,")
                .replaceAll("\\@", "\\\\\\@")
                .replaceAll(">", "\\\\>").replaceAll("!", "\\\\!").replaceAll("\\+", "\\\\\\+");


输入:

<xsl:with-param name="text" select="substring-after($text,$replace)"\/>


预期产量:

<xsl\:with\-param name\=\"text\" select\=\"substring\-after(\$text\,\$replace)\"\/\>

最佳答案

处理简单的字符类时,正则表达式可以直接表达要求:

"<xsl:with-param name=\"text\" select=\"substring-after($text,$replace)\" />"
    .replaceAll("([^0-9A-Za-z])", "\\\\$1")


[]给出字符类别,其中可以包括单个字符和范围。

[^]否定字符类别。

()创建一个捕获组,用打开的括号编号。

$1给出第一次捕获的值。

\\\\是两次转义的“ \”;一次用于Java文字;一次用于正则表达式。

换句话说,将每个不在0-9,A-Z或a-z范围内的字符替换为以反斜杠为前缀的单个字符。

关于java - 字符串中带反斜杠的前缀特殊字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57437221/

10-10 22:09
查看更多