2015-03-13 62 views
2

为什么我收到长度为3而不是4?我怎样才能解决这个问题给予适当的长度?Java拆分 - 错误的长度

String s="+9851452;;FERRARI;;"; 
String split[]=s.split("[;]"); 
System.out.println(split.length); 
+0

你想要4或5的长度吗? – 2015-03-13 19:38:38

+0

我如何得到5个结果?为什么? THKS! – Pablo 2015-03-13 19:41:46

+0

@Pablo就像我刚才提到的那样,这是因为N令牌之间有N + 1个事物:'1; 2; 3; 4; 5'。第五件事是最后的空白字符串。你可能会忽略它,但如果你真的不喜欢它,你可以做一个排除它的arraycopy。 – 2015-03-13 19:50:08

回答

6

你收到的3的长度,因为split

此方法仿佛通过与给定表达式和为零的限制参数调用两个参数分割方法。 因此尾随的空字符串不包含在结果数组中。

如果指定一个负极限,它会很好地工作:

String s="+9851452;;FERRARI;;"; 
    String split[]=s.split(";", -1); 
    System.out.println(Arrays.toString(split)); 

你只需要忽略或删除第五项,或删除后; - 它显示了,因为有在4个标记的两侧有5个(可能是空白的)字符串。有关更多信息,请参阅docs

+0

thks!有用!!! – Pablo 2015-03-13 19:43:40

+0

没问题 - 很高兴我能帮忙! – 2015-03-13 19:45:25

1

String split[]=s.split("[;]", -1);

+1

这是一个正确的答案,但如果你添加一个解释,那将会很棒。无论如何,+1 – rpax 2015-03-14 12:56:34

-1

您可以从apache commons lang使用StringUtils。

String s="+9851452;;FERRARI;;"; 
Arrays.toString(StringUtils.splitPreserveAllTokens(s, ";")) 
+0

这不是问题的答案。 – mrres1 2015-03-15 00:00:05