【问题标题】:Appending sequential characters to StringBuilder [duplicate]将连续字符附加到 StringBuilder [重复]
【发布时间】:2013-09-30 04:37:00
【问题描述】:

我正在尝试将连续字符:A, B, ... AA, AB, ... 添加到 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]);
}

【问题讨论】:

  • @TimS。这正是我想要的,谢谢蒂姆!

标签: c# stringbuilder


【解决方案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));
}

【讨论】:

    猜你喜欢
    • 2016-04-05
    • 2012-11-23
    • 1970-01-01
    • 2018-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多