[英]Remove curly brace in Java
我有一个文本文件,其中每一行以大括号开头和结尾:
{aaa,":"bbb,ID":"ccc,}
{zzz,":"sss,ID":"fff,}
{ggg,":"hhh,ID":"kkk,} ...
在角色之间没有空格。 我正在尝试删除花括号并用空格替换它们,如下所示:
String s = "{aaa,":"bbb,ID":"ccc,}";
String n = s.replaceAll("{", " ");
我尝试使用以下方法转义花括号:
String n = s.replaceAll("/{", " ");
String n = s.replaceAll("'{'", " ");
这些都不起作用,因为它会出现错误。 有谁知道解决方案?
你不能像这样定义一个String:
String s = "{aaa,":"bbb,ID":"ccc,}";
错误在这里,您必须转义字符串中的双引号,如下所示:
String s = "{aaa,\":\"bbb,ID\":\"ccc,}";
如果你打电话,现在没有错误
s.replaceAll("\\{", " ");
如果您有一个IDE(这是一个类似eclipse的程序),您会注意到一个字符串的颜色与标准颜色不同(例如方法的颜色或分号[;])。 如果字符串是相同的颜色(通常是棕色,有时是蓝色),那么你应该没问题,如果你发现里面有一些黑色,你做错了。 通常你在双引号[“]后面放的唯一东西是加号[+]后跟必须添加到字符串中的东西。例如:
String firstPiece = "This is a ";
// this is ok:
String all = s + "String";
//if you call:
System.out.println(all);
//the output will be: This is a String
// this is not ok:
String allWrong = s "String";
//Even if you are putting one after the other the two strings, this is forbidden and is a Syntax error.
String.replaceAll()采用正则表达式,正则表达式需要转义'{'
字符。 所以,替换:
s.replaceAll("{", " ");
有:
s.replaceAll("\\{", " ");
注意双转义 - 一个用于Java字符串,一个用于正则表达式。
但是,由于您只匹配单个字符,因此您不需要正则表达式。 所以你可以改用replace
方法:
s.replace("{", " "); // Replace string occurrences
s.replace('{', ' '); // Replace character occurrences
或者,使用正则表达式版本一举取代两个大括号:
s.replaceAll("[{}]", " ");
这里不需要转义,因为大括号在字符类( []
)中。
只是添加上面的答案:
如果有人在尝试如下,这将无效:
if(values.contains("\\{")){
values = values.replaceAll("\\{", "");
}
if(values.contains("\\}")){
values = values.replaceAll("\\}", "");
}
如果您使用contains(),请使用以下代码:
if(values.contains("{")){
values = values.replaceAll("\\{", "");
}
if(values.contains("}")){
values = values.replaceAll("\\}", "");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.