split方法在数组中留空间

时间:2012-12-04 14:04:24

标签: java

{
    ArrayList<String> node_array = new ArrayList<String>();
    String allValues[] = node.split("[(,)]");

    for(String value : allValues){
        node_array.add(value);
    }

node是一个字符串,例如:(3,4,5,6,3)

由于某种原因,当我验证arraylist的内容时,分裂似乎留下了空间的痕迹作为元素,特别是在(和)应该是的位置。我做错了什么?

3 个答案:

答案 0 :(得分:2)

您要求split()在括号和逗号处分开。在您的字符串中,在第一个分隔符(左括号)之前有一个空白子字符串。 split()保留空白子字符串并将其返回到结果数组的第0个元素。

documentation中有很多例子说明了这个功能是如何运作的。

要解决此问题,您可以忽略空字符串,也可以在其头部翻转正则表达式并匹配数字,而不是在标点字符处进行拆分。

答案 1 :(得分:2)

您已将分隔符定义为String中第一个字符的字符之一,因此空字符""将显示在ArrayList中,因为那是什么发生在第一个分隔符之前。但是,对于您的应用程序,您可以轻松地修复它:

ArrayList<String> node_array = new ArrayList<String>();
String allValues[] = node.split("[(,)]");

for(String value : allValues){
  if(!value.equals("")) node_array.add(value);
}

return node_array;

答案 2 :(得分:1)

node.replace("(","").replace(")","").split(",");

node.substring(1,node.length()-1).split(",");