[英]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.