将字母序列映射到整数

时间:2015-01-27 08:59:20

标签: ruby mapping

我想实现一个映射到整数的字母代码。

例如:

A = 1
B = 2
C = 3
...
Z = 26
AA = 27
AB = 28
...
BA = 53
...
ZZ = 702

执行此映射的最佳方法是什么,以便我可以轻松地将字母代码转换为数字,反之亦然?

2 个答案:

答案 0 :(得分:3)

('A'..'ZZ').to_a[694] # "ZS"
('A'..'ZZ').to_a.index("ZS") # 694

Ruby数组索引从0开始。如果你真的希望从1开始,你可以这样做:

('A'..'ZZ').to_a.unshift(nil)[694] # "ZR"
('A'..'ZZ').to_a.unshift(nil).index("ZR") # 694

答案 1 :(得分:0)

你可以这样做。

str_num_map = lambda do |val|
    arr = ('A'..'ZZ').to_a
    val.is_a?(String) ? (arr.index(val) + 1) : (arr[val-1])
  end

str_num_map.call(1) # => 'A'
str_num_map.call('ZZ') # => 702