0

就是这种情况 - 我需要使用Texta 的属性,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。但我真的不明白为什么上述所有方法都不起作用。我开始认为这与我正在使用ToolStripItemText 属性这一事实有关,但正如一开始所示,我声明了我自己的字符串变量,该变量采用Text属性的值和。

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

4

3 回答 3

5

字符串是不可变的,这意味着任何操作都会产生一个新实例,因此您需要将任何方法结果分配回输入:

string input = "...";
intput = intput.Replace(x, y);
于 2013-03-29T07:42:27.017 回答
2

您没有将结果分配回tempBtnText

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

它应该是:

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

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

于 2013-03-29T07:43:33.940 回答
1

abatischev 是对的,所以写作

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

应该解决你的问题。如果您只想删除前后的空白,请使用:

tempBtnText = tempBtnText.Trim();
于 2013-03-29T07:45:05.903 回答