我想要做的是使用array.each
将每个字母转换为字母表中的相应字母加九。我知道可以通过所有26个字母来对抗case
,但这似乎是不必要的。
例如。假设数组是:
["N", "O", "T", "H", "I", "N", "G"]
我希望数组成为
["23", "24", "29", "17", "19", "24", "17"]
答案 0 :(得分:9)
这是一种方式:
arr.map {|ch| ch.ord - 'A'.ord + 10}
答案 1 :(得分:5)
另一种解决方案可能是使用
plus = 9
nothing = ["N", "O", "T", "H", "I", "N", "G"]
alphabet = ('A'..'Z').to_a
# => ["A", "B", "C", "D", "E", ..., "Z"]
nothing.map { |d| alphabet.index(d) + 1 + plus }
# => [23, 24, 29, 17, 18, 23, 16]
答案 2 :(得分:1)
这是rohit89的Ruby 1.8版本的答案:
ary = ["N", "O", "T", "H", "I", "N", "G"]
ary.map { |str| str[0] - ?A + 10 }
# => [23, 24, 29, 17, 18, 23, 16]
请注意,如果可以,您应该更新自version 1.8.7 is no longer supported以来的Ruby安装。
答案 3 :(得分:0)
一个好方法是使用哈希。 首先创建哈希。我注意到你希望将整数值格式化为字符串,因此哈希值为
hash = Hash[('A'..'Z').to_a.zip(("10".."37").to_a)]
如果您想要整数值,请改用以下哈希
hash = Hash[('A'..'Z').to_a.zip((10..37).to_a)]
然后,您可以使用map
在数组上应用哈希值print ["N", "O", "T", "H", "I", "N", "G"].map{|char| hash[char]}
答案 4 :(得分:-3)
$hash = {"A" => "1", "B" => "2", "C" => "3"}
$hash["A"]
"1"
input = ["A", "C", "A"]
input.each do |me| #giggity
print $hash[me]
print " "
end
=> 1 3 1