是否有更简单的方法在特殊字符前加上\
例如:
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/