如何在结果中拆分带有尾随空字符串的字符串?

时间:2014-12-29 12:39:09

标签: scala

我对Scala字符串拆分行为感到有点困惑,因为它不能一致地工作并且缺少一些列表元素。例如,如果我有一个包含4列且缺少1个元素的CSV字符串。

"elem1, elem2,,elem 4".split(",") = List("elem1", "elem2", "", "elem4")

大!这就是我所期待的。

另一方面,如果缺少元素3和4,那么:

"elem1, elem2,,".split(",") = List("elem1", "elem2")

而我希望它能够返回

"elem1, elem2,,".split(",") = List("elem1", "elem2", "", "")

我错过了什么吗?

2 个答案:

答案 0 :(得分:44)

正如Peter在他的回答中提到的,"string".split(),在Java和Scala中,默认情况下不会返回尾随空字符串。

但是,您可以通过传入第二个参数来指定它返回尾随的空字符串,如下所示:

String s = "elem1,elem2,,";
String[] tokens = s.split(",", -1);

这将获得预期的结果。

您可以找到相关的Java doc here

答案 1 :(得分:3)

我认为尾随空格不包含在返回值中。

split(String regex)的JavaDoc说:“此方法就像通过使用给定表达式和limit参数为零调用双参数split方法一样工作。因此,尾随空字符串不包含在结果数组。“

因此,在您的情况下,应使用split(String regex, int limit)以便在返回值中获取尾随空字符串。