-3

我有一个字符串数组列表,它打印: [[aaa,bbb,..,fff]] 我还没有弄清楚为什么会出现双括号,就好像我在彼此内部有 2 个数组一样。所以我决定使用正则表达式。我应该用什么来移除内括号?

4

4 回答 4

1

这将解决问题:

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

然而,

我还没有弄清楚为什么会出现双括号

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

于 2013-10-04T15:55:38.170 回答
0
str.replaceAll("\\[(.*)\\]", "$1")
于 2013-10-04T16:02:32.377 回答
0

如果括号总是在最后,那么

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

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

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

于 2013-10-04T16:06:18.990 回答
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);

(使用了这个问题的信息及其答案)

于 2013-10-04T16:06:44.070 回答