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

标签 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次

最佳答案

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

由于您的正则表达式正在匹配单词,因此您实际上是在删除单词并将空格保留为术语。

例如:

敏捷的棕色狐狸

将拆分如下

[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

关于java - split ("[^0-9a-zA-Z]+")在结果中显示空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13973622/

相关文章:

PHP - 将一串 HTML 属性拆分为一个索引数组

java - 套接字连接到我的IP而不是127.0.0.1

java - 为每个键打印 map 中列表项的大小

python - 正则表达式模式以匹配 python 中的日期时间

python - 拆分字符串 - Python

java - 如何在除点以外的所有特殊字符处拆分字符串?

java - 在 Java(API) 中合并两个音频文件(不是 concat)?

java - 为什么我的 equals 方法在这个类中不起作用?它无法正常运行

python - 用条件替换(而不是删除)一个字符

java String.split(regex) 设计