java split - 空间问题

时间:2010-12-19 22:15:04

标签: java regex

 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

为什么空间是新世界?

1 个答案:

答案 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("[ .,;]+");

使用字符类([...])和量化器(+),以便连续多个被视为单个匹配。您也可以使用替换+量词(您必须将交替包装在非捕获组中:"(?: |\\.|,|\\;)+"),但使用字符类更清晰。