从String svg JAVA中删除所有转义符号

时间:2017-04-26 08:08:54

标签: java svg

我正在使用这个正则表达式删除我的字符串svg .replaceAll("\\{", "{")中的所有转义符号我用一个简单的主方法测试它,它工作正常

System.out.println("<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" class=\"highcharts-root\" style=\"font-family:&quot;lucida grande&quot;, &quot;lucida sans unicode&quot;, 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("\\{", "{"));

当我尝试在我的代码中使用它时,没有例外但是替换所有函数似乎无法工作。

@RequestMapping(value = URL, method = RequestMethod.POST)
public String svg(@RequestBody String svg) throws TranscoderException, IOException {

    String result = svg;

    String passStr = (String) result.subSequence(5, result.length() - 2);

    passStr = passStr.replaceAll("\\{", "{");

    InputStream is = new ByteArrayInputStream(Charset.forName("UTF-8").encode(passStr).array());
    service.converter(is);

    return result;
}

2 个答案:

答案 0 :(得分:0)

以这种方式尝试:

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

答案 1 :(得分:0)

你的第一个例子没有任何“{”字符,所以我并不感到意外(??)。

但无论如何,你的正则表达式是错误的。反斜杠在正则表达式中的Java字符串中都是转义字符。因此,字符串中的\\仅表示\。这意味着您的正则表达式实际上只是\{,这意味着{。所以你所做的只是用{替换{

如果您想制作一个用\{替换{的正则表达式,则需要将正则表达式中的每个反斜杠字符加倍:\\\\{