在获取用户输入时,除了编写"gr*y"
和*
之类的每个拼写之外,还有一种方法可以识别"grey"
(其中"gray"
字符无关紧要)在我的代码中?
答案 0 :(得分:1)
这可以使用正则表达式来实现。不过,您可能可能不想匹配任何字符-它可能在此特定情况下有效,但可能会完全改变其他单词的含义。
例如,/gr(a|e)y/
将同时匹配“灰色”和“灰色”。
如果您确实想匹配任何个字符,则可以使用一个范围,例如/gr[a-zA-Z]y/
。
这是Rubular上的一个有效示例。
也可能有一颗宝石包裹了所有这些常见的拼写。我建议在rubygems.org和ruby-toolbox.com上进行搜索。
答案 1 :(得分:1)
您要查找的术语称为fuzzy match
或fuzzy search
。
我发现了3个库,它们提供了这样的功能:
您可以浏览每个文档的内容并做出决定,这对您而言更可取。我仅显示amatch
的示例:
require 'amatch'
include Amatch
m = Levenshtein.new("grey")
m.match('gray') # 1
m.match('pray') # 2
它计算两个单词之间的Levenshtein距离:将一个单词转换为另一个单词所需的最小单字符编辑(插入,删除或替换)次数。因此,为了将gray
和grey
个单词计数为相同,您需要将允许距离设置为1
。