用最常用的方法无法清除空白区域

时间:2013-03-29 07:39:58

标签: c# string

就是这种情况 - 我需要使用Text的{​​{1}}属性,我需要在此之前清除字符串中的所有空格。但是我尝试了三种非常常见的(在我看来)场景,它们都没有返回没有空格的字符串。这是我试过的:

ToolStripItem

string tempBtnText = tempItem.Text; 在我使用tempBtnText属性的方法中定义。我觉得这样比较容易。然后我尝试了那些:

Text

所有这些都以原始形式返回了字符串(带有空格)。删除空格的唯一方法是使用此方法:

tempBtnText.Replace(" ", String.Empty);
tempBtnText = Regex.Replace(tempItem.Text, @"^\s*$\n", string.Empty);
string tempBtnTexts = Regex.Replace(tempItem.Text, @"\s+", "");

我在public string RemoveWhitespace(string input) { return new string(input.ToCharArray() .Where(c => !Char.IsWhiteSpace(c)) .ToArray()); } 的类似帖子中找到了这个帖子。但我真的不明白为什么上述所有方法都不起作用。我开始认为与我使用SO Text属性这一事实有关,但正如我刚才所说,我声明了我自己的字符串变量,该变量取{{1}的值属性和。

我不知道。有人能告诉我,这种行为的原因是什么。并不是说使用另一种方法来清除空格是一个很大的问题,但是不工作的选项更加紧凑和可读,如果可能的话我想使用其中一种方法。

3 个答案:

答案 0 :(得分:5)

Strings are immutable,这意味着任何操作都会生成一个新实例,因此您需要将任何方法结果分配回输入:

string input = "...";
intput = intput.Replace(x, y);

答案 1 :(得分:2)

您没有将结果分配回tempBtnText

tempBtnText.Replace(" ", String.Empty);

它应该是:

tempBtnText = tempBtnText.Replace(" ", String.Empty);

字符串是immutablestring.Replace返回一个新字符串,它不会修改现有字符串。

答案 2 :(得分:1)

abatischev是对的,所以写作

tempBtnText = tempBtnText.Replace(" ", String.Empty);

应该解决你的问题。如果你只想删除前面和后面的空格,那么请使用:

tempBtnText = tempBtnText.Trim();