使用指定的分隔符拆分字符串而不省略空元素

hsz*_*hsz 7 java string split

现在我正在使用

StringUtils.split(String str, char separatorChar)
Run Code Online (Sandbox Code Playgroud)

用指定的separator(,)拆分输入字符串.

输入数据示例:

a,f,h
Run Code Online (Sandbox Code Playgroud)

产量

String[] { "a", "f", "h" }
Run Code Online (Sandbox Code Playgroud)

但是有以下输入:

a,,h
Run Code Online (Sandbox Code Playgroud)

它只返回

String[] { "a", "h" }
Run Code Online (Sandbox Code Playgroud)

我需要的只是空字符串对象:

String[] { "a", "", "h" }
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

jzd*_*jzd 12

如果您要使用,StringUtils 则调用该splitByWholeSeparatorPreserveAllTokens()方法而不是split().


Wal*_*inz 8

你可以使用String.split(..)方法,不需要StringUtils:

"a,,h".split(","); // gives ["a", "", "h"]
Run Code Online (Sandbox Code Playgroud)

  • 注意`String.split`仍然会从数组的末尾省略空字符串,例如``a,h,'.split(",")`给`["a","h"]`,而不是`[ "一", "H", ""]`.要从末尾获取空字符串,可以提供负数作为要拆分的第二个参数.(http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#split%28java.lang.String,%20int%29)有时Java很奇怪...... (5认同)

Alg*_*ist 5

你可以使用这个重载的 split()

public String[] split(String regex,
                  int limit)
Run Code Online (Sandbox Code Playgroud)

limit 参数控制应用模式的次数,因此会影响结果数组的长度。如果限制 n 大于零,则该模式将最多应用 n - 1 次,数组的长度将不大于 n,并且数组的最后一个条目将包含最后一个匹配的分隔符之外的所有输入

欲了解更多访问拆分