假设我有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 )。
如何设计一个提取这些有效单词的函数?
答案 0 :(得分:1)
我会使用Pattern类来定义一个与单词定义相匹配的正则表达式。像这样:
([a-zA-z]{2,})
将匹配至少两个字母的连续序列(仅限标准英文字母,但如果您想要更广泛的内容,则可以修改该模式。)
然后,您可以为从文件中读取的每一行创建Matcher,并调用find
方法查看是否找到了两个或更长的序列,如果是,请使用group
方法用于提取匹配序列,end
方法用于获取下一个find
调用的偏移量。
至于确定一个序列是否是一个有效的单词,你需要从某个地方找到一个字典单词列表(在线搜索,有很多免费列表)。为了提高效率,我建议将单词列表中的每个单词读入TreeSet
,然后使用contains
的{{1}}方法检查每个字符串是否是有效的字典单词。