Java拆分 - 错误的长度

时间:2015-03-13 19:32:59

标签: java split

为什么我收到长度为3而不是4?我怎样才能解决这个问题以获得适当的长度?

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

4 个答案:

答案 0 :(得分:7)

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

  

此方法的工作方式就像调用带有给定表达式和limit参数为零的双参数split方法一样。 因此,结尾数组中不包含尾随空字符串

如果您指定一个负限制,它将正常工作:

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

您只需要忽略或删除第5项,或删除尾随; - 它会显示,因为4个令牌的任意一侧有5个(可能是空白的)字符串。有关详细信息,请参阅docs

答案 1 :(得分:1)

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

答案 2 :(得分:0)

为什么它不起作用的答案在文档中:http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#split%28java.lang.String%29。 “因此,结尾的空字符串不包括在结果数组中。”。

答案 3 :(得分:-1)

您可以使用apache commons lang中的StringUtils。

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