当前位置:  开发笔记 > 编程语言 > 正文

将Excel列字母转换为其数字的算法是什么?

如何解决《将Excel列字母转换为其数字的算法是什么?》经验,为你挑选了4个好方法。

我需要一个算法将Excel列字母转换为正确的数字.

这将编写的语言是C#,但任何会做甚至伪代码.

请注意我将把它放在C#中,我不想使用office dll.

对于'A',预期结果将为1

因为'AH'= 34

对于'XFD'= 16384



1> Ian Nelson..:
public static int ExcelColumnNameToNumber(string columnName)
{
    if (string.IsNullOrEmpty(columnName)) throw new ArgumentNullException("columnName");

    columnName = columnName.ToUpperInvariant();

    int sum = 0;

    for (int i = 0; i < columnName.Length; i++)
    {
        sum *= 26;
        sum += (columnName[i] - 'A' + 1);
    }

    return sum;
}


使用Math.Pow实际上不是最好的想法(浮点问题,性能......)使用'sum*= 26; sum + =(characters [i] -'A'+ 1);'

2> mqp..:
int result = colName.Select((c, i) =>
    ((c - 'A' + 1) * ((int)Math.Pow(26, colName.Length - i - 1)))).Sum();



3> wethercotes..:
int col = colName.ToCharArray().Select(c => c - 'A' + 1).
          Reverse().Select((v, i) => v * (int)Math.Pow(26, i)).Sum();



4> Sparr..:

从最后到第一个循环浏览字符。将每个字母(A = 1,Z = 26)的值乘以26 ** N,将其相加。我不具备C#的字符串操作技能,因此这里有一些非常混杂的伪代码:

sum=0;
len=length(letters);
for(i=0;i

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有