正则表达式删除内部双括号

时间:2013-10-04 15:52:47

标签: java regex

我有一个字符串arraylist,它打印出来:[[aaa,bbb,..,fff]]我还没弄明白为什么双括号发生,好像我有2个数组在彼此里面。所以我决定使用正则表达式。我应该用什么来移除内侧支架?

4 个答案:

答案 0 :(得分:1)

这将解决问题:

String str = "[[aaa,bbb,..,fff]]";
str = str.replaceAll("\\[\\[", "[");
str = str.replaceAll("\\]\\]", "]");

然而,

  

我还没弄明白为什么双括号正在发生

这是你应该真正调查的事情,而不仅仅是修复症状,找到并解决原因。

答案 1 :(得分:0)

str.replaceAll("\\[(.*)\\]", "$1")

答案 2 :(得分:0)

如果括号总是在末尾,那么

str = str.substring(1, str.length()-2);

将是最简单的。但是,如果这是较大字符串的一部分,则其他答案的正则表达式最好。

而且,就像其他人告诉你的那样,找到问题,不要只是对它进行创可贴。

答案 3 :(得分:0)

我不会依赖连接字符串列表的toString()方法...我更倾向于建议一个实用工具方法 - 如果你不想使用任何外部库。

public static String getFormattedString(Collection<String> input, String separator)
   StringBuilder sb = new StringBuilder();
   boolean first = true;
   for(String s: input) {
     if(!first) {
       sb.append(separator);
     } else {
       first = false;
     }
     sb.append(s);
   }
   return sb.toString();
}

在您的代码中:

String result = getFormattedString(myStringList, ", ");

通过这样做,无论您使用什么实现,都可以确保获得所需的输出...

如果外部库没问题,那么你就不应该重新发明轮子......

Apache Commons:StringUtil

String result = org.apache.commons.lang.StringUtils.join(myStringList, ", ");

番石榴:木匠

String result = com.google.common.base.Joiner.on(", ").join(myStringList);

(使用来自this question的信息及其答案)