-1

感谢所有可以帮助我的人。我需要删除字符串中以“{”开头并以“}”结尾的所有记录,包括括号。

我试过这样的事情:

value.replaceAll("{.}","")
4

5 回答 5

2
value = value.replaceAll("\\{.*\\}",""));

由于{}是特殊字符,您必须使用\\它们来转义它们。

注意:您没有指定是否必须处理嵌套括号或一系列括号。上面的解决方案只是删除了所有字符,从{}(也删除了括号本身)。

于 2013-07-11T14:22:24.067 回答
1

目前,您正在寻找其中只有一个字符的大括号,除非您没有转义大括号,这在正则表达式中具有特殊含义。所以应该是:\\{.*\\}*is for: 匹配尽可能多的字符)。

但是如果你有一个像: 这样的输入{ab}cd{ef}并且你想得到cd,你需要使用一个非贪婪的操作符,否则你会匹配整个字符串。

在这种情况下,你可以试试这个:

value = value.replaceAll("\\{.*?\\}","");
于 2013-07-11T14:23:31.687 回答
0

花括号是正则表达式中的特殊字符,因此您必须对其进行转义。

value.replaceAll("\\{[^\\}]*\\}", "");

如您所见,您还必须确保要替换的子字符串中没有其他右大括号,以避免在字符串中有多个以“{”开头并以“}”结尾的记录时删除太多.

如果您有嵌套括号,这将不起作用,这里的其他解决方案也不起作用。

于 2013-07-11T14:22:36.597 回答
0
value = value.replaceAll("\\{.*\\}",""));

由于花括号是特殊字符。所以你可以试试这个。

于 2013-07-11T14:27:09.080 回答
0

尝试这个

    String a="{hi}a";
    String arr=a.replaceAll("\\{.*?\\}","");
    System.out.println(arr);
于 2013-07-11T14:25:06.370 回答