Добавление последовательных символов к StringBuilder

Я пытаюсь добавить последовательные символы: A, B, ... AA, AB, ... в начало типа построителя строк. Проблема, с которой я столкнулся, заключается в том, что он добавит все символы 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]);
}

person Mike    schedule 24.09.2013    source источник
comment
@TimS. это именно то, что я искал, спасибо Тим!   -  person Mike    schedule 24.09.2013


Ответы (1)


Что вам действительно нужно, так это то, что выводит целое число по основанию 26, используя буквы от A до Z в качестве цифр. Таким образом, 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));
}
person Jim Mischel    schedule 24.09.2013