对字母打印数字 [英] Print Number Against Letter

查看:75
本文介绍了对字母打印数字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想要波纹管格式的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


这篇关于对字母打印数字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆