我有:
String s = "Hello world";
或
String s = " Hello world ";
结果应该是:
String[] splited = s.split("REGEX");
splited[0].equals(" Hello"); \\true
splited[1].equals("world "); \\true
我确实喜欢这样:s.trim().split(" +");
但我在splited [0]中丢失了第一个空格,但空间应该保留。
答案 0 :(得分:1)
限制(开始时为1000个空格)方式:
String[] splited = s.split("(?<!\\A\\s{0,1000})\\s+(?=\\S)");
细节:
(?<!\\A\\s{0,1000}) # not preceded by white-spaces at the start of the string
\\s+ # white-spaces
(?=\\S) # followed by a non white-space character
或严格限制空格(不适用于制表符或换行符......):
String[] splited = s.split("(?<!\\A {0,1000}) +(?=[^ ])");
答案 1 :(得分:1)
您可以合并否定look ahead/behind assertions
String[] array = s.split("(?<!^\\s*)\\s+(?=\\S)");
(?<!^\\s*)
匹配字符串+ 0
或更多空格的开头(?=\\S)
匹配非空白