就是这种情况 - 我需要使用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}的值属性和。
我不知道。有人能告诉我,这种行为的原因是什么。并不是说使用另一种方法来清除空格是一个很大的问题,但是不工作的选项更加紧凑和可读,如果可能的话我想使用其中一种方法。
答案 0 :(得分:5)
Strings are immutable,这意味着任何操作都会生成一个新实例,因此您需要将任何方法结果分配回输入:
string input = "...";
intput = intput.Replace(x, y);
答案 1 :(得分:2)
您没有将结果分配回tempBtnText
tempBtnText.Replace(" ", String.Empty);
它应该是:
tempBtnText = tempBtnText.Replace(" ", String.Empty);
字符串是immutable,string.Replace
返回一个新字符串,它不会修改现有字符串。
答案 2 :(得分:1)
abatischev是对的,所以写作
tempBtnText = tempBtnText.Replace(" ", String.Empty);
应该解决你的问题。如果你只想删除前面和后面的空格,那么请使用:
tempBtnText = tempBtnText.Trim();