我使用正则表达式来删除我的字符串中的所有额外空格,但是当它执行时,它会删除多余的空格,但最后留下1个空格

时间:2015-03-24 01:25:07

标签: c# regex whitespace

我的问题已经说明了我的问题..那么如何正确删除字符串中的所有额外空白?

想象一下破折号是空格。

my string =" [----------- na ---- me -----]"

输出="名称 - " (字符串末尾有一个空格)

我在Leave事件中使用了这段代码。

((Control)sender).Text = Regex.Replace(((Control)sender).Text, @"\s+", " ");
((Control)sender).Text.TrimEnd(' ');

3 个答案:

答案 0 :(得分:2)

我想你可能会过度思考这个问题。

您是否考虑过使用字符串替换方法。

例如:

    string s = "[       na    me      ]";
    var s2 = s.Replace(" ", "");
    Console.WriteLine(s);
    Console.WriteLine(s2);  

答案 1 :(得分:1)

看来你有一个错字。您的主要问题似乎是在致电Regex.Replace时。仔细查看该行:" "表示用一个空格替换空格序列。尝试将" "更改为""

此外,((Control)sender).Text.TrimEnd(' ');会返回一个新字符串,并且永远不会更新((Control)sender).Text。也许您打算再次将结果分配给Text?请记住,在C#中,字符串是不可变的。但是,通过将" "更改为"",您不再需要该行。

注意:此答案基于示例代码。但是,示例字符串和输出与示例代码不匹配。

答案 2 :(得分:1)

您可能正在运行\r\n的空白,因此请使用此模式:[\s\r\n]+以获取所有空格以及任何回车符和换行符。另外,要简明扼要地使用string.empty代替""作为替换文本。