我使用正则表达式删除了字符串中所有多余的白色 space,但是当它执行时,它删除了多余的白色 spaces 但在最后留下了 1 space

I used regex to remove all extra white space in my string, but when it executes, it removes extra white spaces but leaves 1 space at the end

我的问题已经说明了我的问题。那么如何正确删除字符串中所有多余的白色 space?

假设破折号是 spaces。

我的字符串=“[------------na----我-----]”

output = "name-"(字符串末尾有个space)

我在离开事件中使用了此代码。

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

您似乎有错字。您的主要问题似乎出在您对 Regex.Replace 的调用中。仔细看这一行:" " 表示用一个 space 替换 space 的序列。尝试将 " " 更改为 ""

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

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

我想你可能想多了。

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

例如:

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

您可能 运行 进入空格,即 \r\n,因此请改用此模式:[\s\r\n]+ 获取所有空格以及任何回车符 return 和行饲料。同样为了简洁起见,使用 string.empty 而不是 "" 作为替换文本。