我正在Java
(Android
平台)上为我的公司开发应用程序,遇到了我无法解决的问题。
事情就是这样:通过阅读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
文本下能正常工作……我的意思是!它确实有一个空文件,对吗?
答案 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为非正数,则将尽可能多地应用该模式,并且数组可以具有任何长度。