0

对于作业,我正在根据字典单词的二叉搜索树检查输入文件是否存在拼写错误。

我遇到的问题是它返回的数字和诸如“今天”之类的拼写错误的单词。我想从输入中排除所有标点符号和数字。

我遇到了 .useDelimiter() 方法,但我不知道要放入括号中的参数。现在我只是复制粘贴我能找到的任何东西,看看它是否有效。

到目前为止,这是我用于阅读单词的代码。

reader = new Scanner(new File(testFile));
reader.useDelimiter("[.,:;()?!\"\\s\\d]+");
while (reader.hasNext()) {
test.add(reader.next());

当我这样做时,它确实会阻止数字和诸如“今天”之类的事情发生,但如果我有一个像“5th”这样的词,它会说“th”拼写错误。

任何帮助表示赞赏。

4

2 回答 2

0

如果我错了,请纠正,但参数useDelimiter应该用“管道”符号分隔。喜欢useDelimiter("[|,|\\n")

于 2013-10-20T12:30:00.210 回答
0

第一条评论:这个问题不会有一个简单的快速解决方案。

您正在处理(显然)英语拼写——没有一套适合编程的简单规则可以完成您想做的事情。所以不要指望它。您显然对偶尔的误报不满意,因此很难做到。

我认为你将不得不放弃使用所有这些东西作为分隔符——收缩也不起作用。我认为您将不得不解析文件并使用更广泛的定义获取“单词”,然后对每个单词进行处理以确定通过拼写检查的内容和不通过的内容。

您可能还需要在扫描中向前看——单引号可用于引用单词和短语,或表示缩写词或所有格,并且在拼写检查中应以不同方式处理它们。

于 2013-10-20T12:12:35.550 回答