我有一个字符串arraylist,它打印出来:[[aaa,bbb,..,fff]]我还没弄明白为什么双括号发生,好像我有2个数组在彼此里面。所以我决定使用正则表达式。我应该用什么来移除内侧支架?
答案 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, ", ");
通过这样做,无论您使用什么实现,都可以确保获得所需的输出...
如果外部库没问题,那么你就不应该重新发明轮子......
String result = org.apache.commons.lang.StringUtils.join(myStringList, ", ");
String result = com.google.common.base.Joiner.on(", ").join(myStringList);
(使用来自this question的信息及其答案)