我正在尝试编写一个替换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();
}
答案 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();
}