我正在使用这个正则表达式删除我的字符串svg .replaceAll("\\{", "{")
中的所有转义符号我用一个简单的主方法测试它,它工作正常
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("\\{", "{"));
当我尝试在我的代码中使用它时,没有例外但是替换所有函数似乎无法工作。
@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;
}
答案 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字符串和中都是转义字符。因此,字符串中的\\
仅表示\
。这意味着您的正则表达式实际上只是\{
,这意味着{
。所以你所做的只是用{
替换{
。
如果您想制作一个用\{
替换{
的正则表达式,则需要将正则表达式中的每个反斜杠字符加倍:\\\\{
。