从字符串中提取有效单词

时间:2014-03-16 16:06:37

标签: java string words

假设我有100个包含字母和空格的大小相同(15个字符)的字符串。

空格比每个字符串中的字母更常见。 一些示例字符串:

(在下面的例子中,我并没有实际计算每个字符串的长度,以便为15,但你想知道):

A       

    G

B C

OP   F   NGR

     TO

TO ATP

CAT   D O G

F   HOME OF

H O D R      IN

我想从每个字符串中提取所有有效的单词。

有效单词是指不包含空格,包含两个或多个字母且实际上是英语单词的单词。 字符串可以不包含任何单词,一个单词或多个单词。

例如,第5行(字符串)包含有效字: TO 。 第6行也是如此。 TO 旁边的 ATP 会被丢弃,因为它不是有效字。 第8行有一个有效单词( CAT ),第9行有两个有效单词( HOME OF ),第9行有一个有效单词行(的 IN )。

如何设计一个提取这些有效单词的函数?

1 个答案:

答案 0 :(得分:1)

我会使用Pattern类来定义一个与单词定义相匹配的正则表达式。像这样:

([a-zA-z]{2,})

将匹配至少两个字母的连续序列(仅限标准英文字母,但如果您想要更广泛的内容,则可以修改该模式。)

然后,您可以为从文件中读取的每一行创建Matcher,并调用find方法查看是否找到了两个或更长的序列,如果是,请使用group方法用于提取匹配序列,end方法用于获取下一个find调用的偏移量。

至于确定一个序列是否是一个有效的单词,你需要从某个地方找到一个字典单词列表(在线搜索,有很多免费列表)。为了提高效率,我建议将单词列表中的每个单词读入TreeSet,然后使用contains的{​​{1}}方法检查每个字符串是否是有效的字典单词。

相关问题