Java 字符串拆分方法不会返回两个字符串
为什么split方法不返回包含2个元素的数组Java 字符串拆分方法不会返回两个字符串,java,string,split,Java,String,Split,为什么split方法不返回包含2个元素的数组 for(int i = 0; i < temparray.size(); i++) { if (temparray.get(i).contains("_")) System.out.println("True" + temparray.get(i).length() + " " + temparray.get(i)); String[] temp = temparray.get(i).split("_"); System.out.pri
for(int i = 0; i < temparray.size(); i++)
{
if (temparray.get(i).contains("_"))
System.out.println("True" + temparray.get(i).length() + " " + temparray.get(i));
String[] temp = temparray.get(i).split("_");
System.out.println(temp[0]);
//System.out.println(temp[1]);
//friendsOld.add(new Friend(temp[0],temp[1]));
}
for(int i=0;i
如果我取消对其中任何一行的注释,我会得到ArrayOutofBoundsException:1
。println总是返回True,即字符串的长度,然后返回一个位于字符串中的\uuu
字符串,而不是在字符串的末尾
我尝试了
.split()
的负参数,将字符串转换为字符数组,并使用indexOf()
来断开字符串,以查找\uu
的位置,然后使用substring()
手动拆分它。字符串本身可能有问题,但下面是字符串数组的代码:ArrayList temparray=new ArrayList()代码>似乎您忘记了if语句后面的大括号:
if (temparray.get(i).contains("_")) {
System.out.println("True" + temparray.get(i).length() + " " + temparray.get(i));
String[] temp = temparray.get(i).split("_");
System.out.println(temp[0]);
System.out.println(temp[1]);
friendsOld.add(new Friend(temp[0],temp[1]));
}
按照您编写的方式,即使字符串不包含下划线,也会将其拆分。只有“True[…]”的输出仅限于包含一个字符串的字符串
您应该开始使用调试器-当遇到异常断点时,调试器将显示变量的值,允许您进一步跟踪代码中的错误。您的意思是将所有代码放在大括号中吗
for(int i = 0; i < temparray.size(); i++)
{
if (temparray.get(i).contains("_")) {
System.out.println("True" + temparray.get(i).length() + " " + temparray.get(i));
String[] temp = temparray.get(i).split("_");
System.out.println(temp[0]);
//System.out.println(temp[1]);
//friendsOld.add(new Friend(temp[0],temp[1]));
}
}
for(int i=0;i
您的if条件仅适用于下一行。因此,如果temparray.get(i)不包含“\u1”,则只能从split中获得一个结果。temparray.get(i)中存储的确切字符串值是多少?您将代码应用于哪个字符串?向我们展示一些例子,以便更容易帮助您找到解决方案。正如其他人已经提到的:您可能忘记了一些大括号。但也要注意,后面的空字符串不包括在内,因此字符串“foo_”也将只返回一个元素,即使它包含分隔符(请参见:)这里有一些示例:Yarko Berlinh_40656411 Joseph Nguyen_52233247 Johan Cheah_72681788@AmitBhargava@JoachimRohde,\u
从不在末尾,因此尾随字符串不是空的。对吗?我不想让它戴牙套。if语句只是为了确保字符串对于“拆分”是有效的。temparray
的每个元素对于contains()
返回True。是否确实每个元素都包含和下划线(而不仅仅是打印到控制台的元素)?在哪个元素上发生异常?您的评论让我意识到了一些事情,并且在添加另一个inStream.readLine()时代码>它工作正常。我先读错了一行,一行一行。谢谢。我不想让它戴牙套。if语句只是为了确保字符串对于“拆分”是有效的。temparray
的每个元素对于contains()
返回True。