【问题标题】:How to check if textbox contains only zero and display an alert message?如何检查文本框是否仅包含零并显示警报消息?
【发布时间】:2016-02-24 16:33:39
【问题描述】:

我使用带有 C# 的 Windows 窗体。我有一个带有button1textbox1 的表格。

我想要的是:当我单击 button1 时,如果 textbox1 包含任何零或零(仅零的任何组合),则显示警报消息,例如:

0
00
0000
000
000000000

我尝试了以下代码,但如果 textbox1 有多个零(如 000),它将不起作用

private void button1_Click(object sender, EventArgs e)
{    
    if (textBox1.Text == "0")
        MessageBox.Show("Enter Value larger than zero);
}

如果点击button1textbox1任何零组合,我如何获得警报消息?

【问题讨论】:

    标签: c# string string-matching


    【解决方案1】:

    你可以像这样检查字符串是否只包含零(0)

    var str = "000000000";
    var isZero = str.All(c => c == '0');
    

    或者Regex

    var isZeroWithRegex = Regex.IsMatch(str, "^0+$");
    

    【讨论】:

      【解决方案2】:

      你可以使用:

      int convertedText=Convert.ToInt32(textBox1.Text);
      if(convertedText==0)
      {
      ...
      }
      

      【讨论】:

      • 这不安全。因为如果用户输入类似000zed 这不是一个数字,你的Convert.ToInt32 将抛出异常。
      • @ CodeNotFound 。我允许文本框只接受数字,但问题是:如果文本框为空,则由于转换功能而出现错误。你能帮忙吗
      【解决方案3】:

      您可以通过执行以下操作来修剪 0 字符:

      var text1 = "00000000";
      var text2 = "00009000";
      
      Console.WriteLine("Text1: {0}", string.IsNullOrWhiteSpace(text1.Trim('0')));
      Console.WriteLine("Text2: {0}", string.IsNullOrWhiteSpace(text2.Trim('0')));
      

      返回:

      文本1:真

      Text2: false //因为我们在文本中间有9。

      在你的代码中你会有这样的东西:

      private void button1_Click(object sender, EventArgs e)
      {    
           if (string.IsNullOrWhiteSpace(textBox1.Text.Trim('0'))
                 MessageBox.Show("Enter Value larger than zero");
      }
      

      【讨论】:

      • @ CodeNotFound 。感谢您的帮助。您的代码运行良好,但是当我在文本框中输入 0.00 时会出现错误(我希望它改为提供警报消息)。你能帮忙吗?谢谢
      • Trim 方法接收要修剪的字符数组。如果要删除“。”字符然后像这样使用修剪:textBox1.Text.Trim('0', '.')。您可以根据需要向 Trim 方法添加任何字符。
      【解决方案4】:
      int value = Convert.ToInt32(textBox1.Text);
      if(value ==0)
      {
      //show
      }
      else
      {
      //do something else
      }
      

      您可以将值转换为整数来执行此操作。不过,您可能需要为字符串检查等添加一些验证。

      【讨论】:

      • 这不安全。因为如果用户输入类似000zed 这不是一个数字,你的Convert.ToInt32 将抛出异常。
      • @Saransh Kataria。感谢您的帮助,此代码运行良好,但如果文本框为空,则由于转换功能而出现错误。你能帮忙吗?谢谢
      • @CodeNotFound 我已经提到需要对字符串检查进行验证/检查才能使其正常工作
      • @naouf 你可以使用 if (!string.IsNullOrEmpty(textbox1.Text))
      【解决方案5】:

      要做到这一点:

      private void button1_Click(object sender, EventArgs e)
      {    
                 if ( int.Parse(textBox1.Text) == 0)
      
                  MessageBox.Show("Enter Value larger than zero");
      }
      

      这会将字符串转换为int,00、000、0000等等于0。

      【讨论】:

      • 这不安全。因为如果用户输入类似000bd 这不是一个数字,你的int.parse 将抛出异常。
      【解决方案6】:

      我会以我的方式解释。首先,我将替换所有“0”而不是检查长度,因为如果此文本的“0”超过一个长度不等于 0,否则长度必须为 0

      if(textBox1.Text.Replace("0","").Length==0)
      

      【讨论】:

      • 这是 Trim 方法在简单语法中所做的事情。
      【解决方案7】:

      根据问题的说明,您想知道文本框中是否有任何零。最简单的方法是

      if (textBox1.Text.Contains("0")) MessageBox.Show("Enter Value larger than zero);

      但是,如果您想确保该值大于零,请将其转换为 int 并检查。

      int numberEntered;
      if (!int.TryParse(textBox1.Text,out numberEntered)){
         //handle conversion error
      }
      if (numberEntered == 0)
          MessageBox.Show("Enter Value larger than zero);`
      

      【讨论】:

        猜你喜欢
        • 2015-07-31
        • 1970-01-01
        • 1970-01-01
        • 2013-09-20
        • 1970-01-01
        • 2013-10-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多