String[] t = a.slowa("a. R; er, we p.");
for (String w : t)
System.out.println(w);
}
//...
public String[] slowa(String s) {
return s.split(" |\\.|,|\\;");
}
Run Code Online (Sandbox Code Playgroud)
输出:
a
R
er
we
p
Run Code Online (Sandbox Code Playgroud)
为什么空间是新世界?
你已经告诉String#split函数拆分空格或点或逗号或分号.这就是它的成就:
"a. R; er, we p."
^^ ^^ ^^^ ^ ^
|| || ||| | |
|| || ||| | +--Split here
|| || ||| +----And here
|| || ||+-------And here
|| || |+--------And here
|| || +---------And here
|| |+------------And here
|| +-------------And here
|+---------------And here
+----------------And here
Run Code Online (Sandbox Code Playgroud)
...因为你使用了没有量词的交替.你想要的是分开任何这些:
return s.split("[ .,;]+");
Run Code Online (Sandbox Code Playgroud)
它使用一个字符class([...])和一个quanitifier(+),以便连续多个被视为一个匹配.您也可以使用交替+量词(您必须将交替包装在非捕获组中"(?: |\\.|,|\\;)+"):但是使用字符类更清晰.