如何更改文本框以删除额外的符号和空格

时间:2015-11-29 11:12:27

标签: c# c#-4.0 c#-3.0

目前我使用此代码:

 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-

1 个答案:

答案 0 :(得分:1)

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

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 =&gt; 123-1otherword =&gt; -1以及000234word =&gt;等尾随零的相同内容234(只有积极的)。

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