为什么我收到长度为3而不是4?我怎样才能解决这个问题以获得适当的长度?
String s="+9851452;;FERRARI;;";
String split[]=s.split("[;]");
System.out.println(split.length);
答案 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, ";"))