split(“[^ 0-9a-zA-Z] +”)在结果中显示空字符串

时间:2012-12-20 13:49:31

标签: java regex split

我正在尝试将文件从文件拆分为文字

split("[^0-9a-zA-Z]+") 

但结果中有空字符串。我该如何解决这个问题?

长度|数组中的数字|字|计数| %

2   [  1]  to       9   5.56 %
0   [  2]           6   3.70 %
5   [  3]  there        6   3.70 %
6   [  4]  result       3   1.85 %
4   [  5]  text         3   1.85 %
3   [  6]  but      3   1.85 %

输出是:

I'm trying to split text from file to words

split("[^0-9a-zA-Z]+") 
but there are result empty strings too. Is there any solutions to solve this problem?

粘贴3次

1 个答案:

答案 0 :(得分:2)

对于String.split,您传递的参数是与术语的分隔符匹配的正则表达式。分隔符本身被删除。

由于你的正则表达式匹配单词,你实际上是删除单词并将空格留作术语。

E.g:

快速的棕色狐狸

将按以下方式拆分

[The][ ][quick][ ][brown][ ][fox]
 Sep  0   Sep   1   Sep   2  Sep

产生三个单空格字符串的数组。

我猜你的一些单词并不完全匹配正则表达式,这就是为什么你的结果也会得到一些。

解决方案:要么反过来(myString.split('\\s')似乎是一个好的开始),要么使用匹配器并迭代直到它找不到任何东西。

请参阅http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#split%28java.lang.String%29