如何在Java中实现字符串拆分方法,如c#

dad*_*egs 2 c# java string split

在C#中,如果我有这样的字符串:

String test = ";;;;";
String[] split = test.Split(';');
Console.WriteLine(split.Length); // Then I got 5 here
Run Code Online (Sandbox Code Playgroud)

但在Java中:

String test = ";;;;";
String[] split = test.split(";");
System.out.println(split.length); // Then I got only 1 here
Run Code Online (Sandbox Code Playgroud)

Hov*_*els 9

尝试:

  String test = ";;;;";
  String[] split = test.split(";", -1);
  System.out.println(split.length);
Run Code Online (Sandbox Code Playgroud)

字符串API说明该方法的重载还增加了一个限制字段.

如果n是非正数,那么模式将被应用尽可能多的次数,并且数组可以具有任何长度.


fge*_*fge 6

使用:

test.split(";", -1);
Run Code Online (Sandbox Code Playgroud)

这是一个不幸的设计决定; 默认情况下,.split()将从结果数组的末尾修剪(大多数)空字符串.

如果你想要一个真正的分离器,使用番石榴Splitter.它比JDK的.split()方法执行得更好,不张扬,不必使用正则表达式作为参数!