c# - 增加c#中字符串的大小

标签 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();
}

最佳答案

String 类是不可变的,因此一旦对其进行初始化,就无法更改其大小。

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

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

关于c# - 增加c#中字符串的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27021715/

相关文章:

c# - 如何将 string[] 转换为 list<int>?

c# - 从 C# + ASP.NET 发送免费短信

java - 在 Java 中使用 StringBuffer 和 StringBuilder 作为方法返回类型

java - java String 和 String Builder 问题

c# - 为什么 StringBuilder 类是密封的?

c# - 系统窗体定时器参数

c# - 如何阻止 ContextMenuStrip 中的项目特别处理&符号?

c# - 从 web.config 按名称读取 WCF 服务终结点地址

java - 每次调用 StringBuffer#toString 和 StrinBuilder#toString 都会返回新实例或字符串池中的实例?

c# - 使用逐字字符串文字和 appendformat 时出现索引(从零开始)错误