我有密码 -
class Conversion
hash ={'I' => 1, 'V' => 5, 'X' => 10, 'L' => 50, 'C' => 100, 'D' => 500, 'M' => 1000}
puts "enter the string"
input = gets.chomp.upcase.split(//)
result = 0
hash.each do | key, value |
case key
when 'M'
result = result + value
when 'D'
result = result + value
when 'C'
result = result + value
when 'L'
result = result + value
when 'X'
result = result + value
when 'V'
result = result + value
when 'I'
result = result + value
end
end
puts result
end
c= Conversion.new
我通过命令行给出一个像 mxv 这样的字符串,并将其转换为一个数组,并将其作为“输入”中的 MXV。 现在我想遍历哈希,这样我就可以获得数组中作为字符串的键的相应“值”。 例如,对于 MXV ,我需要值 = [1000, 10, 5]。
我该怎么做?
最佳答案
arr = []
"MXV".each_char do |i|
arr << hash[i.capitalize]
end
arr = [1000, 10, 5]
或
"MXV".each_char.map { |i| hash[i.capitalize] }
如果你输入的字符在哈希键中不存在
例如:
"MXVabc".each_char.map { |i| hash[i.capitalize] }
它会输出:
=> [1000, 10, 5, nil, nil, 100]
你只需要使用compact
方法。
"MXVabc".each_char.map { |i| hash[i.capitalize] }.compact
=> [1000, 10, 5, 100]
关于arrays - 迭代哈希以检索与数组匹配的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30136714/