将数字转换为字母串的最佳方法是什么?

时间:2010-10-21 07:30:26

标签: c# numbers

在C#中将多位数转换为字母串的最佳方法是什么?

例如, 如果我有一个号码,

int digits = 1234567890

我希望将其转换为

的字符串
string alpha = "ABCDEFGHIJ"

这意味着1代表A,2代表B,依此类推。

6 个答案:

答案 0 :(得分:8)

这样的事情:

int input = 123450;
string output = "";

while (input > 0)
{
    int current = input % 10;
    input /= 10;

    if (current == 0)
        current = 10;

    output = (char)((char)'A' + (current - 1)) + output;
}

Console.WriteLine(output);

以上节省了必须通过数组或字典定义转换列表的麻烦。只需计算正确的Unicode代码点即可完成转换。

答案 1 :(得分:2)

首先,0123将被解释为123,因此前导0将被忽略。这是一个可能的解决方案:

int i = 1230468;
StringBuilder res = new StringBuilder(i.ToString());

for (int j = 0; j < res.Length; j++)
   res[j] += (char)(17); // '0' is 48, 'A' is 65

Console.Out.WriteLine(res.ToString()); // result is BCDAEGI

答案 2 :(得分:0)

没有太多不同的符号需要替换,只需简单的替换即可。

int digits = 0123456789;
string digitsAsString = digits.ToString("0000000000"); // Trick to preserve the 0.
string alpha = digitsAsString
    .Replace('0', 'A')
    .Replace('1', 'B')
    .Replace('2', 'C')
    .Replace('3', 'D')
    .Replace('4', 'E')
    .Replace('5', 'F')
    .Replace('6', 'G')
    .Replace('7', 'H')
    .Replace('8', 'I')
    .Replace('9', 'J');
Console.WriteLine(alpha);

答案 3 :(得分:0)

注意这个指示

output = (char)((char)'A' + (current - 1)) + output;

每次迭代都会创建新对象。 字符串连接必须使用StringBuilder ...

完成

我必须对这篇文章的答案进行一般性的考虑。开发人员不仅要注意优雅,算法效率,还要注意内存效率。

C#不是C o C ++而对象是坏动物: - )

答案 4 :(得分:-1)

制作一组字符:

char alphabet = {'A','B','C' .... }

然后使用数字编号作为数组的索引:

digit = 14567
char[] digit_ar = new String(digit).ToCharArray();

foreach (char c in digit_ar)
{
    string s+=digit_ar[Convert.ToInt32(c)-Base];
}

Base是A char代码

这是伪代码,我没有测试过它!

它应该有用......

答案 5 :(得分:-1)

使用Dictionary课程,请查看此内容。