2012-07-25 49 views
0

可能重复:
Java StringTokenizer, empty null tokensjava的分裂给出不同阵列长度

考虑到这一点的java片段:

public class Test { 

    public static void main(String[] args) { 
     String s1 = "1;2;3;4;5"; 
     String s2 = "1;2;;;"; 

     String[] splits1 = s1.split(";"); 
     String[] splits2 = s2.split(";"); 

     System.out.println(splits1.length); 
     System.out.println(splits2.length); 
    } 
} 

OUTPUT:

5 
2 

我需要一些替代方法来提取相同长度的数组。

如果在搜索的字符串中有四个分号(“;”),那么我希望在适当的时候使用空元素(splits2 [2] = null, splits2 [3] = null等)。

您能否提供解决方案?

+2

[这](http://stackoverflow.com/questions/785586/how-can-split-a-string-which-contains-唯一分隔符)应该可以帮助你。检查投票的答案。 – cosmincalistru 2012-07-25 10:17:32

+0

@cosmincalistru thx帮助,我有点新的编程 – 2012-07-25 10:57:09

回答

1

1.使用“;”之间的“空格”具有相同长度的阵列。 你将有空闲空间不为空

例如:

String[] s = "1;2; ; ;" ; 

2.阵列是一种对象其可以是,并且如果它包含在其内部,但是本参考变量可以是null,但是原始类型不能为空。So i am using space.

///////////////////// EDITED /////////////////

使用此以下片断,其工作....

String a = "1;2;;;;"; 
     char[] chArr = a.toCharArray(); 

     String temp = new String(); 
     String[] finalArr = new String[a.length()]; 

     for (int i = 0; i < chArr.length; i++) { 

      try { 
       temp = chArr[i] + ""; 
       Integer.parseInt(temp); 
       finalArr[i] = temp; 

      } catch (NumberFormatException ex) { 

       finalArr[i] = null; 

      } 

     } 
     for (String s : finalArr){ 
      System.out.println(s); 
     } 
      System.out.println(finalArr.length); 
+0

我不应该修改搜索字符串之间有分号之间的空格 – 2012-07-25 11:02:12

+0

我想@dadu的问题是,他不能选择输入数据,所以试图按原样分割数据应该是给出的解决方案。 – cosmincalistru 2012-07-25 11:05:22

+0

@dadu ...查看我编辑的部分....它包含你想要的代码.. – 2012-07-25 11:29:23