Python在Java中拆分语义

And*_*ock 4 python java regex split spaces

当我在python中拆分一个字符串时,相邻的空格分隔符被合并:

>>> str = "hi              there"
>>> str.split()
['hi', 'there']
Run Code Online (Sandbox Code Playgroud)

在Java中,分隔符未合并:

$ cat Split.java
class Split {
    public static void main(String args[]) {
        String str = "hi              there";
        String result = "";
        for (String tok : str.split(" "))
            result += tok + ",";
        System.out.println(result);
    }
}
$ javac Split.java ; java Split
hi,,,,,,,,,,,,,,there,
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法来获取Java中的python空间拆分语义?

Nik*_* B. 6

String.split 接受正则表达式,因此为它提供一个匹配相邻空格的表达式:

str.split("\\s+")
Run Code Online (Sandbox Code Playgroud)

如果你想模仿Python的确切行为str.split(),你也需要修剪:

str.trim().split("\\s+")
Run Code Online (Sandbox Code Playgroud)

引用Python文档str.split():

如果未指定sep或为None,则应用不同的拆分算法:连续空格的运行被视为单个分隔符,如果字符串具有前导或尾随空格,则结果将在开头或结尾处不包含空字符串.因此,将空字符串或仅由空格组成的字符串拆分为None分隔符将返回[].

所以上面仍然不是一个确切的等价物,因为它将返回['']空字符串,但它可能适合你的目的:)