Incrementation of char

前端 未结 3 535
青春惊慌失措
青春惊慌失措 2020-12-09 09:27

I found some question asking how to let char \'B\' to return \'C\' and then \'D\' etc. The answers were quite complex and mostly just overkill.

Why not to use simply

3条回答
  •  轮回少年
    2020-12-09 10:03

    If you just want to increment :

    Char x = 'A';
    Char y = (Char)(Convert.ToUInt16(x) + 1);
    

    But, if you want an excel like column :

        // (1 = A, 2 = B...27 = AA...703 = AAA...)
        public static string GetColNameFromIndex(int columnNumber)
        {
            int dividend = columnNumber;
            string columnName = String.Empty;
            int modulo;
    
            while (dividend > 0)
            {
                modulo = (dividend - 1) % 26;
                columnName = Convert.ToChar(65 + modulo).ToString() + columnName;
                dividend = (int)((dividend - modulo) / 26);
            }
    
            return columnName;
        }
    
        // (A = 1, B = 2...AA = 27...AAA = 703...)
        public static int GetColNumberFromName(string columnName)
        {
            char[] characters = columnName.ToUpperInvariant().ToCharArray();
            int sum = 0;
            for (int i = 0; i < characters.Length; i++)
            {
                sum *= 26;
                sum += (characters[i] - 'A' + 1);
            }
            return sum;
        }
    

提交回复
热议问题