7


1

数字をアルファベット文字列に変換する最良の方法は何ですか?

C#で複数桁の数字をアルファベット文字列に変換する最良の方法は何ですか。

たとえば、番号を言うなら、

int digits = 1234567890

これを文字列に変換してほしい

string alpha = "ABCDEFGHIJ"

つまり、1はAを表し、2はBを表します。

6 Answer


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コードポイントを計算するだけで変換を実行できます。


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


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);


0


この指示に注意してください

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

すべての反復で、新しいオブジェクトを作成します。 文字列の連結は、StringBuilderで行う必要があります …​

私はこの投稿に与えられた答えを一般的に考慮しなければなりません。 開発者は、優雅さやアルゴリズムの効率だけでなく、メモリの効率にも注意を払う必要があります。

C#はC o C ++ではなく、オブジェクトは悪い動物です:-)


-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];
}

ベースはA文字コード

これは擬似コードであり、テストしていません!

動作するはずです…​


-1


Dictionaryクラスを使用して、これを見てください。