首页 > 解决方案 > 如何仅以有效形式制作文本框数字和运算符。. .

问题描述

当我输入“12312.-.-.,”这样的输入时,程序不工作或出现任何错误

            string c = textBox1.Text;
            if (c.Contains(".") || c.Contains("-") || c.Contains("1") || c.Contains("2") || c.Contains("3") || c.Contains("4") || c.Contains("5") || c.Contains("6") || c.Contains("7") || c.Contains("8") || c.Contains("9") || c.Contains("0"))
            {
                if (c.IndexOf('-') == 0 || c.IndexOf('.')==c.Length-1)
                {
                    c = c.Substring(1, c.Length - 1);
                    if (c.Contains("-") || c.Contains("."))
                    {
                        MessageBox.Show("Error");
                    }


                }
            }
            else { textBox1.Clear(); }```

标签: c#.nettextboxcalculatorindexof

解决方案


您确实应该使用正则表达式检查输入值:

Regex rgx = new Regex(@"^-?\d+(\.\d+)?$");
string test1 = "-123.23";
string test2 = "12312.-.-.,,";
if (!rgx.IsMatch(test1)) MessageBox.Show("Error in test1");
if (!rgx.IsMatch(test2)) MessageBox.Show("Error in test2");

推荐阅读