目前我使用此代码:
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-
。
答案 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*