增加c#中字符串的大小

时间:2014-11-19 16:18:31

标签: c# stringbuilder

我正在尝试编写一个替换c#中%20中的空格的方法。我正在使用stringBuilder来构建新字符串。但是我遇到了超出范围的异常,可能是因为数组的大小耗尽了。有没有办法增加我使用字符串

构建的字符串的大小
static void Main(string[] args)
{
    String add = "Mr John Smtih";
    Console.WriteLine(add);
    StringBuilder sb = new StringBuilder(add);

    int j = 0;
    for (int i = 0; i < add.Length; i++)
    {
        if (add[i].Equals(' '))
        {
            sb[j] = '%';
            j++;
            sb[j] = '2';
            j++;
            sb[j] = '0';
        }
        else
        {
            sb[j] = add[i];
        }
        j++;
    }
    Console.WriteLine(add);
    Console.WriteLine(sb);
    Console.ReadLine();
}

2 个答案:

答案 0 :(得分:3)

您必须重新初始化一个新的空StringBuilder,并在其上调用Append(char)或其他appender方法。不要索引它。

答案 1 :(得分:3)

String类是不可变的,因此一旦初始化它就无法改变它的大小。

您应该使用Append()中的StringBuilder方法。您的代码看起来像这样:

static void Main(string[] args)
{
    String add = "Mr John Smtih";
    Console.WriteLine(add);
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < add.Length; i++)
    {
        if (add[i].Equals(' '))
        {
            sb.Append("%20");
        }
        else
        {
            sb.Append(add[i]);
        }
    }
    Console.WriteLine(add);
    Console.WriteLine(sb);
    Console.ReadLine();
}