编程谜语:如何将Excel列名转换为数字?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (11)

最近,在一次面试中,我被要求解决一个编程难题,我认为这将是一个有趣的分享。这是关于将Excel列字母转换为实际数字,如果还记得,Excel用字母从A到Z命名它的列,然后顺序是AA,AB,AC。AZ、BA、BB等

必须编写一个函数,该函数接受字符串作为参数(如“AABCCE”),并返回实际的列号。

解决方案可以是任何语言。

提问于
用户回答回答于

我很久以前就为Python脚本编写了这个脚本:

def index_to_int(index):
    s = 0
    pow = 1
    for letter in index[::-1]:
        d = int(letter,36) - 9
        s += pow * d
        pow *= 26
    # excel starts column numeration from 1
    return s
用户回答回答于

在我看来,这是一个标准的缩减:

Python:

def excel2num(x): 
    return reduce(lambda s,a:s*26+ord(a)-ord('A')+1, x, 0)

C#:

int ExcelToNumber(string x) {
    return x.Aggregate(0, (s, c) => s * 26 + c - 'A' + 1 );
}

扫码关注云+社区