如何更改文本框删除多余的符号和空格

How to change a textbox removing extra symbols and spaces

目前我使用这个代码:

 private static void ArrayFixer(TextBox tb)
    {
        tb.Text = tb.Text.Trim();
        while (tb.Text.Contains("  ")) tb.Text = tb.Text.Replace("  ", " ");
        while (tb.Text.Contains("- ")) tb.Text = tb.Text.Replace("- ", "-");
        while (tb.Text.Contains("--")) tb.Text = tb.Text.Replace("--", "-");
    }

这工作正常,但如果输入是 5- 4 -3- -4 结果将是 5-4 -3-4 我希望它像 5 4 -3 -4

我叠在这条线上(看起来非常错误)

while (tb.Text.Contains(Convert.ToString(char.IsDigit(???) + "-")) //replace ("-"," ")

我的意思是文本框变得几乎如我所愿:数字由 " " 分隔,差不多就是这样。我需要避免在我的字符串中使用 5-3-

你在找这样的东西吗?它将从输入字符串中提取有效整数。

var str = "5-   4  -3-  -4";
var matches = Regex.Matches(str, "-?[0-9]+");
var res = string.Join(" ", matches.Cast<Match>().Select(m => m.Value));

更新

要排除评论中提到的情况,您可以使用此正则表达式

(?<=\s|^)-?[1-9]\d+

更新 2

此模式将匹配单词开头的所有正整数和负整数,例如 123someword => 123-1otherword => -1 以及与尾随零,例如 000234word => 234(仅正数)。

(?<=^|\s|\s0*)-?[1-9]\d*