【发布时间】:2016-04-29 14:53:49
【问题描述】:
我正在寻找问题的解决方案。我需要创建一种方法来创建单词列表和只是单词,对于任何给定的文本,包括非英文字母和特殊字符。我进行了很多搜索,并且正在阅读文档here,但这对我来说并不完美。最好的之一是这个:
String line = " W metal, w liczbę, w trupie ciało, -"
String[] words = line.split("\\P{javaLetter}+");
for (int i = 0; i < words.length; i++) {
if (!words[i].equals("")) { // I don't want to check everytime
anotherList.add(word[i].toLowerCase())
}
}
}
但结果是:
["", "W", "metal", "w", "liczbę", "w", "trupie", "ciało"]
字符串开头的这个空格破坏了我的正则表达式。 哪个是使用拉丁字母在任何语言中生成单词的正确正则表达式(不关心英文单词中的撇号)?
【问题讨论】:
-
你试过 line.Split(" ") 吗?拆分空格以获取句子中的单词是有意义的。正则表达式很棒,但也很挑剔。
-
您打印的是
words还是anotherList? -
@tobias_k 显然是字,因为 anotherList 不会有他的结果的第一个索引中存在的空字符串。
-
@RichardBarker 我问的原因是什么,但问题并不清楚。所以我想实际的问题是:使用什么正则表达式使
words与anotherList立即相同? -
真的需要拆分吗?您可以使用模式并遍历匹配项吗?