从字符串svg JAVA中删除所有转义符号
我使用这个正则表达式从字符串svg从字符串svg JAVA中删除所有转义符号,java,svg,Java,Svg,我使用这个正则表达式从字符串svg中删除所有转义符号。replaceAll(“\\{,“{”)我用一个简单的main方法测试了它,比如 System.out.println("<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" class=\"highcharts-root\" style=\"font-family:"lucida grande", "lu
中删除所有转义符号。replaceAll(“\\{,“{”)
我用一个简单的main方法测试了它,比如
System.out.println("<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" class=\"highcharts-root\" style=\"font-family:"lucida grande", "lucida sans unicode", arial, helvetica, sans-serif;font-size:12px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"600\" height=\"350\"><desc>Created"
+ " with Highcharts 5.0.7</desc><defs><clipPath id=\"highcharts-lqrco8y-45\"><rect x=\"0\" y=\"0\" width=\"580\" height=".replaceAll("\\{", "{"));
试着这样做:
public static void main(String[] args) {
String test = "abc\\{}def";
System.out.println("before: " + test);
System.out.println("after: " + test.replaceAll("\\\\[{]", "{"));
}
输出
before: abc\{}def
after: abc{}def
您的第一个示例没有任何“{”字符,所以我并不奇怪它能工作(??) 但无论如何,您的正则表达式是错误的。反斜杠在Java字符串和正则表达式中都是转义字符。所以字符串中的
\
只意味着\
。这意味着您的正则表达式实际上只是\{
,这意味着{/code>。所以您真正做的就是替换{
与{
如果要生成一个用{
替换\{
的正则表达式,则需要将正则表达式中的每个反斜杠字符加倍:\\\\{
与以前的正则表达式相同。我不明白为什么只有在主方法中启动它时它才起作用,但当我在代码中使用它时,正则表达式不起作用。是的,我注意到了这一点,并尝试了您的解决方案,但再次尝试了相同的解决方案。当我在主方法中使用它时,它工作正常,但在我的应用程序中不起作用,如我的第一篇文章所示。passStr=passStr.repaceAll(“\\[{]”,“{”);System.out.println(passStr);在这一行中,我看到调用replaceAll方法后没有任何更改。不知道为什么?!?如果要解析XML,请使用XML解析器。
before: abc\{}def
after: abc{}def