假设你有一个String[]
,它是在.split()
之后创建的,然后会让你有一堆空字符串,例如。
myArray['','hello','thetimes','economist','','','hi']
有没有办法从String[]
中删除它们而不必循环,检测字符串是否为空然后添加到新数组?
答案 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+")
多个空格。