如何更改文本框删除多余的符号和空格
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*
目前我使用这个代码:
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*