0

連続した文字を追加しようとしています:A, B, ... AA, AB, ...最初に aa stringbuilder タイプ。私が抱えている問題は、二重文字ではなくすべての ASCII 文字を追加することです。私のコードは次のようになります。

string prefix = null;
System.Text.StringBuilder text = new System.Text.StringBuilder();
for (j = 0; j < genList.Count; j++)
{
    prefix = "." + Convert.ToChart(j + 65).ToString();
    text.Append(prefix + genList[j]);
}
4

1 に答える 1

2

本当に必要なのは、A から Z までの文字を数字として使用して、基数 26 の整数を出力するものです。したがって、0 は A、25 は Z、26 は AA などに対応します。

const string digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

string ToBase26(int i)
{
    StringBuilder sb = new StringBuilder();
    do
    {
        sb.Append(digits[i % 26]);
        i /= 26;
    } while (i != 0);
    // The digits are backwards. Reverse them.
    return new string(sb.ToString.Reverse());
}

これは最適な方法ではありませんが、うまくいきます。

A、B、C、... AA、AB、AC ... BA などを出力するには:

for (int i = 0; i < Count; ++i)
{
    Console.WriteLine(ToBase26(i));
}
于 2013-09-24T19:54:34.033 に答える