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

时间:2011-06-01 11:56:36

标签: java string split

现在我正在使用

StringUtils.split(String str, char separatorChar)

用指定的分隔符(,)拆分输入字符串。

示例输入数据:

a,f,h

输出

String[] { "a", "f", "h" }

但是有以下输入:

a,,h

只返回

String[] { "a", "h" }

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

String[] { "a", "", "h" }

我怎样才能做到这一点?

5 个答案:

答案 0 :(得分:12)

如果您要使用StringUtils,请拨打splitByWholeSeparatorPreserveAllTokens()方法,而不是split()

答案 1 :(得分:8)

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

"a,,h".split(","); // gives ["a", "", "h"]

答案 2 :(得分:4)

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

public String[] split(String regex,
                  int limit)

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

更多访问split

答案 3 :(得分:3)

普通String.split做你想要的事。

"a,,h".split(",")会产生{ "a", "", "h" }

ideone.com demonstration

答案 4 :(得分:1)

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

使用方法org.apache.commons.lang.StringUtils.splitByWholeSeparatorPreserveAllTokens()

优于其他方法的不同类:

  • 它不会跳过任何子字符串或空字符串,并且对所有字符或字符串作为分隔符都可以正常工作。
  • 它还有一个多态形式,我们可以指定给定字符串的最大令牌数。

String.Split()方法将正则表达式作为参数,因此它适用于某些字符作为分隔符,但不适用于所有例如:管道(|)等。我们必须将escape char附加到pipe(|),以便它可以正常工作。

Tokenizer(字符串或流) - 它会跳过delimiter's之间的空字符串。