繁体   English   中英

在Java中删除大括号

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM