java split提供不同的数组长度

时间:2012-07-25 10:12:53

标签: java split

  

可能重复:
  Java StringTokenizer, empty null tokens

考虑这个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);
    }
}

输出:

5
2

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

如果搜索到的字符串中存在四个分号(“;”)(ex s2),那么我希望在适当的情况下使用null元素的长度= 5的分裂数组(splits2)(splits2 [2] = null,splits2 [3] = null等)。

您能提供解决方案吗?

1 个答案:

答案 0 :(得分:1)

1。在“;”之间使用“空格”拥有相同长度的数组。 您将拥有空格不为空

例如:

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

<强> 2。数组是一个对象,可以是 null ,如果它包含引用变量,那么它们可以是 null ,< strong>但原始类型不能为空。 So i am using space.

<强> ///////////////////// EDITED ///////////////// < / p>

使用以下代码段,ITS WORKING ....

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);