java:.split()之后从数组中删除元素

时间:2010-02-04 14:35:24

标签: java arrays

假设你有一个String[],它是在.split()之后创建的,然后会让你有一堆空字符串,例如。

myArray['','hello','thetimes','economist','','','hi']

有没有办法从String[]中删除它们而不必循环,检测字符串是否为空然后添加到新数组?

8 个答案:

答案 0 :(得分:8)

这里有一种更简单的方法。

String.split("\\s+")将消除这些空字符串。

答案 1 :(得分:3)

  

有没有办法将它们从中删除   String []无需循环,   检测字符串是否为空   添加到新阵列?

没有。数组具有固定长度。

答案 2 :(得分:2)

这是正确的MAGIC方式:

String str = "1, 2,3   4,,  , ,5,,6,  ,";
String arr[] = str.split("(\\s*,\\s*)+");

答案 3 :(得分:1)

解决方案只解决部分问题 - 只删除尾随的空字符串。 我用过:

String st = "a,b,c,,d,,f,,,";
List<String> list = Arrays.asList(st.split("\\s*,\\s*"));
while (list.remove(""));

答案 4 :(得分:0)

最简单的方法是将其转换为List,对其进行迭代并删除空元素,例如。

List<String> parts = new LinkedList<String>(string.split(pattern));
for (Iterator<String> it = parts.iterator();
     it.hasNext();
     ) {
    if (it.next().isEmpty()) {
        it.remove();
    }
}
return parts.toArray(new String[parts.size()]);

答案 5 :(得分:0)

String[] parts = string.split("\\s*" + splitString + "\\s*");

splitString是您最初拆分的字符串。

这扩展了分割字符串,为其添加任何个空格,以便它们作为分割器的一部分实现,而不是结果数组的一部分。

答案 6 :(得分:0)

真正的问题在于正在执行拆分的正则表达式字符串。请查看here以获取其他人建议添加的特殊符号列表,例如\\s

如果你想学习正则表达式比学习正则表达式更简单,你可以遍历数组并将每个非空字符串添加到ArrayList<String>,然后将其更改回固定大小的数组。

答案 7 :(得分:0)

没有简单的方法可以从数组中删除元素。您可以replaceAll()然后拨打split或拨打split("\\s+")多个空格。