簡體   English   中英

文本框可以包含字母,但不能包含數字

[英]Textbox can contain letters but no numbers allowed

我正在嘗試創建文本框,您可以在其中輸入您的姓名。 如果文本框為空,則顯示錯誤。 如果文本框包含數字,則顯示錯誤。

在我的示例中,當我有空的文本框以及像Robert1這樣的數字時,它的確顯示了錯誤。 但是,當Text以字母結尾時,它將不起作用。 如果您寫1Robert,則不會顯示錯誤。

我的代碼:

string vards = textBox1.Text;

// Empty or wrong format

if (string.IsNullOrWhiteSpace(textBox1.Text))
    {
        label5.Text = "You didn't enter anything!";
    }
else
{
    foreach(char c in vards)
    {
        if (Char.IsNumber(c))
        {
            label5.Text = "Your name is incorrect!";
        }
        else
        {
            label5.Text = "";
        }
    }
}

我想我只需要加休息一下。

            if (Char.IsNumber(c))
                    {
                        label5.Text = "Your name is incorrect!";
                        break;
                    }

循環產生無效的結果。 它會覆蓋label1每個字符的label5的內容,最終結果僅與最后一個字符有關

// Empty or wrong format
if (string.IsNullOrWhiteSpace(textBox1.Text))
{
    label5.Text = "You didn't enter anything!";
}
else
{
    bool onlyLetters = textBox1.Text.All(x => Char.IsLetter(x));

    if (!onlyLetters)
    {
        label5.Text = "Your name is incorrect!";
    }
    else
    {
        label5.Text = "";
    }
}

您正在對文本中的每個字符使用循環。 在那里,您將覆蓋label5.Text始終。 因此,實際上,最后一個字符對您的邏輯很重要。

您可以使用此:

bool anyNumbers = textBox1.Text.Any(Char.IsDigit);
if(anyNumbers)
{
    label5.Text = "Your name is incorrect!";
}

這里沒有LINQ:

bool valid = true;
foreach (char c in textBox1.Text)
{
    if (char.IsDigit(c))
    {
        valid = false;
        break;
    }
}

您可以執行以下操作:

var input = txtExample.Text;
if(!string.IsNullOrEmpty(input))
     if(input.Any(d => char.IsDigit(d) == false)
     {
          // Valid
     }

您實際上可以使用Linq,甚至不使用foreach循環。 請記住,這是在服務器端完成的,如果您在Web應用程序中觸發了PostBack 您可能想要這樣做,所以如果它是基於Web的,則應該在客戶端執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM