将excel列字母转换为Ruby中的整数
什么是最简单的方法来转换类似excel的列字母为整数?
例如:
AB --> 27 AA --> 26 A --> 0 Z --> 25
def excel_col_index( str ) value = Hash[ ('A'..'Z').map.with_index.to_a ] str.chars.inject(0){ |x,c| x*26 + value[c] + 1 } end
要么
def excel_col_index( str ) offset = 'A'.ord - 1 str.chars.inject(0){ |x,c| x*26 + c.ord - offset } end
我会做这样的事情:
def column_name_to_number(column_name) multipliers = ('A'..'Z').to_a chars = column_name.split('') chars.inject(-1) { |n, c| multipliers.index(c) + (n + 1) * 26 } end
啊没关系..
def cell2num col val = 0 while col.length > 0 val *= 26 val += (col[0].ord - 'A'.ord + 1) col = col[1..-1] end return val - 1 end