Java 使用空数据拆分字符串
我正在为我的公司在Java 使用空数据拆分字符串,java,android,arrays,string,split,Java,Android,Arrays,String,Split,我正在为我的公司在Java(Android平台)上开发一个应用程序,遇到了一个我无法解决的问题。 事情是这样的:通过读取文本文件我用以下内容填充内容字符串: String content = ""; content = buffReader.readLine(); buffReader.close(); 这工作做得很好。content字符串正确地填充了文件内容。这个字符串的每一行数据都用&字符分隔,因此我将行数组填充如下: String[] lines; lines = content.sp
Java
(Android
平台)上开发一个应用程序,遇到了一个我无法解决的问题。
事情是这样的:通过读取文本文件
我用以下内容填充内容
字符串:
String content = "";
content = buffReader.readLine(); buffReader.close();
这工作做得很好。content
字符串正确地填充了文件内容。这个字符串的每一行数据都用&
字符分隔,因此我将行
数组填充如下:
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];
}
字符串行;字符串[]数据;
字符串data1=“”;字符串data2=“”;字符串data3=“”;字符串data4=“”;
对于(int i=0;i
如果文本是A:B:C:D
,代码工作正常。即使文本是A:B::D
,也没关系(而且data3
变成了我想要的“
)。但是,如果文本是A::
,则代码不起作用并关闭应用程序。在这种情况下,我可以获得data1=data[0]
,但对于其他每个步骤,都会显示错误
有人知道发生了什么吗?!我是不是遗漏了什么?非常感谢
编辑:
如果有人能解释为什么代码可以与
A:B::D
text一起正常工作。。。我是说!它确实有一个空字段,对吗?您应该像这样使用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];
}
for(int i=0;i
如果n为非正,则图案将被应用尽可能多的次数,并且阵列可以具有任意长度
“不行”。。你能更具体一点吗?@Stultuske,它关闭了应用程序。@Pspl错误是什么?更具体一点。我猜你得到的是IndexOutOfBoundsException,因为默认情况下,
split
会删除空的尾随字符串,所以对于A::
结果数组将只包含{“A”
而不是{>{“A”,“A”,“,,,,,,,,,,,,,,,
(如果没有索引,1,2,3)。如果使用“>代码>拆分(“:”,-1)< /代码>,因为它删除了后面的空字符串,而不是非空元素中间的字符串。例如,如果你有<代码> A:B::/Cord:>首先它将被分成数组<代码> {“a”、“b”、“b”、“}”、“}”。但由于通常我们不需要最后一个空值(比如当我们基于行分隔符分割文本文件时,它的末尾有一些额外的空行),Java作者决定自动从末尾删除该空字符串(因为Java 8有时甚至从前面删除-)。因此,它创建并返回另一个较小的数组,而不包含该“副产品”。