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

Art*_*ans 25 scala

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

"elem1, elem2,,elem 4".split(",") = List("elem1", "elem2", "", "elem4")
Run Code Online (Sandbox Code Playgroud)

大!这就是我所期待的.

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

"elem1, elem2,,".split(",") = List("elem1", "elem2")
Run Code Online (Sandbox Code Playgroud)

而我希望它能够回归

"elem1, elem2,,".split(",") = List("elem1", "elem2", "", "")
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

Ale*_*x K 46

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

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

String s = "elem1,elem2,,";
String[] tokens = s.split(",", -1);
Run Code Online (Sandbox Code Playgroud)

这将获得预期的结果.

您可以在此处找到相关的Java文档.