将字母序列映射到整数

Map alphabetic sequence to integer

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

例如:

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

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

('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

你可以这样实现。

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