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(" |\\.|,|\\;");
}
输出:
a
R
er
we
p
为什么空间是新世界?
答案 0 :(得分:7)
您已告诉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
...因为你使用了没有量词的交替。你想要的是分开任何:
return s.split("[ .,;]+");
使用字符类([...]
)和量化器(+
),以便连续多个被视为单个匹配。您也可以使用替换+量词(您必须将交替包装在非捕获组中:"(?: |\\.|,|\\;)+"
),但使用字符类更清晰。