如何验证string.split()是否返回null

时间:2013-02-13 13:42:33

标签: java string-split

我正在从文件中读取数据:

Some Name;1|IN03PLF;IN02SDI;IN03MAP;IN02SDA;IN01ARC
Some Other Name;2|IN01ALG;IN01ANZ
Another Name;3|
Test Testson;4|IN03MAP;IN01ARC;IN01ALG

我对从该文件中读取的每一行使用string.split(),如下所示:

String args[]         = line.split("\\|");                  
String candidatArgs[] = args[0].split(";");

if (args[1] != "" || args[1] != null) { 

    String inscrieriString[] = args[1].split(";");

事情是:当我Another Name;3| .split("\\|")之后args[1]第二部分(null)应为空时,""或{{ 1}}(我真的不知道)。

然而我在if (args[1] != "" || args[1] != null)上获得了一个数组索引超出范围的错误(同样在:Another Name;3|

6 个答案:

答案 0 :(得分:7)

args中只有一个元素。

if (args.length > 1) {
    String inscrieriString[] = args[1].split(";");
}

答案 1 :(得分:4)

您需要检查args数组的长度。

String.split()为第三行返回长度为1的数组,以便args[1]超出范围。 您还应该使用String.isEmpty()代替!= ""

最有可能的是,您甚至可以跳过额外的检查 - 检查数组长度应该足够了:

if (args.length > 1) {
    String inscrieriString[] = args[1].split(";");
    ...
}

答案 2 :(得分:1)

分割时检查args的长度,如果长度允许,则仅访问另一个索引(如果是args.length > 1)。

在这种情况下:

String line = "Another Name;3|"; //simplified for the example
line.split("\\|");

它将返回此数组:

{ "Another Name;3" }

答案 3 :(得分:1)

尝试

String args[]         = line.split("\\|",2);                  
String candidatArgs[] = args[0].split(";");

if (args.length==2) 
    String inscrieriString[] = args[1].split(";");

答案 4 :(得分:1)

args[1]不为空或为空。它超出了数组范围。

System.out.println("Another Name;3|".split("\\|").length);

在使用之前,您需要检查数组的长度。

答案 5 :(得分:1)

我认为你可以测试args的长度,它应该返回1或2.如果它是1你就知道没有args [1]。