类String的split方法忽略分号分隔符

时间:2012-01-19 12:43:40

标签: java split

  

可能重复:
  Java split() method strips empty strings at the end?

在Java中,我使用String split方法拆分包含以分号分隔的值的字符串。

目前,我有以下一行在99%的情况下都有效。

String[] fields = optionsTxt.split(";");

使用以下字符串时,一切都很完美:

"House;Car;Street;Place" => [House] [Car] [Street] [Place]

但是当我使用下面的String时,split方法会忽略最后两个分号。

"House;Car;;" => [House][Car]

怎么了?或者有解决方法吗?

3 个答案:

答案 0 :(得分:19)

尝试以下:

String[] = data.split(";", -1);

有关详细信息,请参阅Javadoc获取split方法的两个参数。

调用String.split(String)时,会调用String.split(String, 0)并丢弃尾随空字符串(正如文档中所说),当使用String.split(String, n)调用n < 0时,它不会丢弃任何东西。

答案 1 :(得分:1)

您可以使用番石榴Splitter

来自文档:

Splitter.on(',').split("foo,,bar, quux")

将返回["foo", "", "bar", " quux"]

的可迭代

答案 2 :(得分:1)

Java API javadocs中明确提到了这一点:

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#split(java.lang.String

“因此,结尾数组中不包括尾随空字符串。”

如果您想要空字符串,请尝试使用相同方法的双参数版本,并使用负第二个参数:

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#split(java.lang.String,%20int

“如果n是非正数,则模式将被应用尽可能多次,并且数组可以具有任何长度。”

编辑:嗯,我与锚点的链接不起作用。

相关问题