如何在保持空格的同时split()一个String

Roc*_*Lee 9 java regex

你如何分割一串单词并保留空格?

这是代码:

String words[] = s.split(" "); 
Run Code Online (Sandbox Code Playgroud)

字符串包含: hello world

代码运行后,单词[]包含: "hello" "" world

理想情况下,它不应该是中间的空字符串,但包含两个空格:words []应该是: "hello" " " " " world

我怎样才能得到这个结果?

Rei*_*eus 14

你可以使用lookahead/lookbehind断言:

String[] words = "hello  world".split("((?<=\\s+)|(?=\\s+))");
Run Code Online (Sandbox Code Playgroud)

其中(?<=\\s+)(?=\\s+)是零宽度组.


dcs*_*ohl 5

如果您可以在一个字符串中同时容忍两个空格,则可以

String[] words = s.split("\\b");
Run Code Online (Sandbox Code Playgroud)

然后单词包含("hello", " ", "world")

  • +1,因为就我而言,这也是可以接受的,因为我最终试图反转每个单词的字符,但保持单词按顺序排列并在每个单词之间保留相同的空格。 (2认同)