在C#中,如果我有这样的字符串:
String test = ";;;;";
String[] split = test.Split(';');
Console.WriteLine(split.Length); // Then I got 5 here
但在Java中:
String test = ";;;;";
String[] split = test.split(";");
System.out.println(split.length); // Then I got only 1 here
答案 0 :(得分:9)
尝试:
String test = ";;;;";
String[] split = test.split(";", -1);
System.out.println(split.length);
String API解释了此方法重载,同时添加了限制字段。
如果n是非正数,则模式将被应用尽可能多次,并且数组可以具有任何长度。
答案 1 :(得分:6)
使用:
test.split(";", -1);
这是一个不幸的设计决定;默认情况下,.split()
将从结果数组的末尾修剪(大多数)空字符串。
如果您想要真实分割器,请使用Guava的Splitter
。它比JDK的.split()
方法执行得更好,不张扬,不必使用正则表达式作为参数!