本文介绍了对字母打印数字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想要波纹管格式的C#代码(函数). 其中A = 1,B = 2,C = 3,D = 4,...... Z = 26 AA = 27,AB = 28,AC = 29 ... AZ = 52 BA = 53,BB = 54,BC = 55,...... BZ = 78 等等... 打印输出类似. 字母A,数字为1 字母B,数字为2 依此类推...
I want c# code (function) for bellow formats. Where A=1, B=2, C=3, D=4, ......Z=26 AA= 27, AB=28,AC=29...... AZ=52 BA=53, BB=54,BC=55, ......BZ=78 And so on... print output like. Alphabet A, Number is 1 Alhphabet B, Number is 2 And so on...
推荐答案public static string ConvertAlpha(int value) { const int a = (int)'A'; value = value - 1; var returnValue = new StringBuilder(); while (value > -1) { var remainder = value % 26; returnValue.Insert(0, (char)(a + remainder)); value = value / 26 - 1; } return returnValue.ToString(); } public static int ConvertNumber(string value) { const int a = (int)'A' - 1; int returnValue = 0; foreach (var character in value.ToUpper()) { returnValue *= 26; returnValue += (int)character - a; } return returnValue; }
似乎可以正常使用.
Seems to work right.
您可以将其视为26的基本格式,并可以根据字母的位置在第二位置使用26 *字母+在第一位置使用字母,依此类推. you can treat it as base 26 format and depending on the position of the alphabet you can use 26*alphabet at 2nd position+ alphabet at 1nd position and so on...
如何使用Math.DivRem(...)? 例如 How about using Math.DivRem(...)? E.g. public static string ToExcelName(int num) { List<char> digits = new List<char>(); do { int rem; num = Math.DivRem(num, 26, out rem); digits.Add(Convert.ToChar(65+rem)); } while (num != 0); return string.Join(null, digits.Reverse<char>()); }
干杯 安迪
Cheers Andi
更多推荐
对字母打印数字
发布评论