【问题标题】:java split gives different array lengths [duplicate]java split给出不同的数组长度[重复]
【发布时间】:2012-07-25 10:12:52
【问题描述】:

可能重复:
Java StringTokenizer, empty null tokens

考虑到这个java sn-p:

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) 中有四个分号 (";"),那么我希望拆分数组 (splits2) 的长度 = 5,并在适当的地方使用空元素 (splits2[2]=null, splits2 [3]=null 等)。

您能提供解决方案吗?

【问题讨论】:

  • This 应该可以帮助您。检查投票的答案。
  • @cosmincalistru 感谢您的帮助,我对编程有点陌生

标签: java split


【解决方案1】:

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

例如:

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

2。数组是一个对象,可以为null,如果里面包含引用变量,则可以为null,但原始类型不能为空。So i am using space.

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /p>

在下面使用这个 sn-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);

【讨论】:

  • 我不应该将搜索到的字符串修改为分号之间有空格
  • 我猜@dadu 的问题是他无法选择输入数据,因此尝试按原样拆分数据应该是给出的解决方案。
  • @dadu...查看我编辑的部分...它包含您想要的代码...
  • @KumarVivekMitra :感谢您的想法,这是一种有趣的方法。似乎不太复杂的解决方案是使用 split 的第二个参数。您可以编辑您的答案并作为其他替代解决方案包含: String[] splits2 = s2.split(";", -1); ?
猜你喜欢
  • 1970-01-01
  • 2011-07-20
  • 2011-06-02
  • 1970-01-01
  • 1970-01-01
  • 2018-06-14
  • 1970-01-01
  • 2019-09-24
相关资源
最近更新 更多