Ruby - 使用用户输入+正则表达式搜索哈希键并返回多个匹配项

时间:2014-06-30 23:16:26

标签: ruby regex hash

我使用了Project Gutenberg#29765英文字典文件,重新格式化了它,并创建了一些大的哈希(A到D等)。

我正在使用这样的查找工作正常并在您输入单词时显示定义 -

$look = gets.chomp
$look = $look.upcase
puts " "
if (/^[A-D]/).match($look)
puts dicta[$look]

问题是某些单词有多个条目 - 而不是广泛修改113,000个条目字典文件,我想我只是修改了这个副本 -

dicta = { "BARE" => "def 1", "BARE" => "def 2"}

...到此

dicta = { "1| BARE" => "def 1", "2| BARE" => "def 2"}

我会添加某种类型的第二次查找以找到这些副本

elsif (/^[0-9] + {user input}) ... (something?)

我需要什么才能找到并显示BARE的重复项?

我强烈怀疑这是构建所有这一切的完全错误的方法,但是......任何帮助都会非常感激。提前谢谢。

1 个答案:

答案 0 :(得分:2)

这个{"BARE" => ["def 1", "def 2"]}似乎是比你选择的更好的数据结构,把重复项放在列表中仍然会使你的哈希查找O1 - bjhaid

@bjhaid(嗨bjhaid)有正确的想法。如果您的哈希值为h而“BARE”只有一个定义,则您可以拥有h["BARE"] = ["def 1"]h["BARE"] = "def "。在后一种情况下,您需要检查if h["BARE"].is_a? Array..<multiple definitions> else...<single definition>...end。 - Cary Swoveland