【发布时间】:2017-07-13 15:00:43
【问题描述】:
我有一个字符串,在单词之间有多个空格,我想删除这些空格,然后将它们带回来..问题是在删除它们后带回空格我试图编写我的想法,但它运行时没有任何输出,有时它给了我一个例外“索引超出数组边界”..任何帮助
string pt = "My name is Code"
int ptLenght = pt.Length;
char[] buffer1 = pt.ToCharArray();
spaceHolder = new int[pt.Length];
for (int m = 0; m < pt.Length; m++)
{
if (buffer1[m] == ' ')
{
hold = m;
spaceHolder[m] = hold;
}
}
char[] buffer = pt.Replace(" ", string.Empty).ToCharArray();
int stringRemovedSpaces = pt.Length;
char[] buffer = pt.ToCharArray(); // source
char[] buffer2 = new char[ptLenght]; // destination
for (int i = 0; i < pt.Length; i++)
{
buffer2[i] = buffer[i];
}
for (int i = 0; i < buffer2.Length; i++)
{
if (i == spaceHolder[i])
{
for (int m = stringRemovedSpaces; m <= i; m--)
{
buffer2[m-1] = buffer2[m];
}
buffer2[i] = ' ';
}
}
return new string(buffer2);
【问题讨论】:
-
我不清楚你到底想要什么。为什么不创建一个新变量来保存“无空格”字符串,然后在需要空格时引用原始变量?
-
您的代码是否删除了 all 个空格?使用正则表达式用一个空格替换多个空格更容易、更快捷:
Regex.Replace("A B C",@"\s+"," ")将返回A B C -
您是否使用调试器单步执行了代码(尽管您确实应该按照@maccettura 所说的去做,但您仍然应该能够诊断出您的代码)
标签: c# string winforms char spaces