用空数据分割字符串

时间:2019-02-13 13:23:49

标签: java android arrays string split

我正在JavaAndroid平台)上为我的公司开发应用程序,遇到了我无法解决的问题。 事情就是这样:通过阅读text file,我用以下内容填充content字符串:

String content = "";
content = buffReader.readLine(); buffReader.close();

这项工作还不错。 content字符串已正确填充文件内容。此字符串的每一行数据都用&字符分隔,因此我像这样填充lines数组:

String[] lines; 
lines = content.split("&");

再次,这里没有错误。然后,每个字段都用:字符分隔,我再次尝试以相同的方式填充下一个字符串:

String line; String[] data;
String data1 = ""; String data2 = ""; String data3 = ""; String data4 = "";

for (int i = 0; i < lines.length; i++){
    line = lines[i];
    data = line.split(":");
    data1 = data[0];
    data2 = data[1];
    data3 = data[2];
    data4 = data[3];
}

如果文本为A:B:C:D,则代码工作正常。即使文本为A:B::D也没问题(并且data3变成了"",就像我想要的那样)。但是,如果文本为A:::,则该代码将无效,并关闭该应用程序。在这种情况下,我可以得到data1 = data[0],但对于其他每个步骤,都会显示错误。

有人知道发生了什么吗?!我想念什么吗?非常感谢。

编辑:

如果有人能解释为什么代码在A:B::D文本下能正常工作……我的意思是!它确实有一个空文件,对吗?

1 个答案:

答案 0 :(得分:1)

您应该像这样使用split来防止删除空值

for (int i = 0; i < lines.length; i++){
    line = lines[i];
    data = line.split(":",-1);
    data1 = data[0];
    data2 = data[1];
    data3 = data[2];
    data4 = data[3];
}
  

如果n为非正数,则将尽可能多地应用该模式,并且数组可以具有任何长度。