博 之 文

以 拼 搏 设 计 梦 想 , 以 恒 心 编 程 明 天
  首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

传入A-Z其中的一个字母就会返回相应的数字1-26

Posted on 2012-11-28 16:24  IsNull_Soft  阅读(225)  评论(0)    收藏  举报
    private int ColumnToIndex(string column)
    {
        if (!Regex.IsMatch(column.ToUpper(), @"[A-Z]+"))
        {
            throw new Exception("Invalid parameter");
        }
        int index = 0;
        char[] chars = column.ToUpper().ToCharArray();
        for (int i = 0; i < chars.Length; i++)
        {
            index += ((int)chars[i] - (int)'A' + 1) * (int)Math.Pow(26, chars.Length - i - 1);
        }
        return index;
    }
//传入数字返回字母
private string convertToCharacter(int i)
        {
            char[] list = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
            StringBuilder sb = new StringBuilder();
            while ((i - 1) / 26 != 0)
            {
                sb.Append(list[i / 26 - 1]);
                i = i % 26;
            }
            i = (i - 1) % 26;
            sb.Append(list[i]);
            return sb.ToString();
        }