我需要传递给java.lang.String.split()以使用所有空白字符(' ','\t', '\n'等)作为分隔符将字符串分割为子字符串数组的正则表达式模式是什么?


当前回答

“\\s+”应该可以

其他回答

String str = "Hello   World";
String res[] = str.split("\\s+");

要使用Unicode空白分隔字符串,需要使用

s.split("(?U)\\s+")
         ^^^^

(?U)内联嵌入标志选项相当于Pattern。UNICODE_CHARACTER_CLASS使\s的简写字符类匹配空白Unicode类别中的任何字符。

如果要使用空白分隔并将空白保留在结果数组中,请使用

s.split("(?U)(?<=\\s)(?=\\S)|(?<=\\S)(?=\\s)")

参见正则表达式演示。参见Java演示:

String s = "Hello\t World\u00A0»";
System.out.println(Arrays.toString(s.split("(?U)\\s+"))); // => [Hello, World, »]
System.out.println(Arrays.toString(s.split("(?U)(?<=\\s)(?=\\S)|(?<=\\S)(?=\\s)")));
// => [Hello,    , World,  , »]

“\\s+”应该可以

因为它是一个正则表达式,我假设你也不会想要非字母数字字符,如逗号,点,等,可以被空格包围(例如。“one, two”应该给出[one][two]),它应该是:

myString.split(/[\s\W]+/)
String string = "Ram is going to school";
String[] arrayOfString = string.split("\\s+");