我有一个字符串数组
string [] ar = { "net" , "com" , "org"};
我希望当用户输入网站示例以数组中的字符串结尾时标签写为“true”
我试过了:
private void timer1_Tick(object sender, EventArgs e)
{
foreach ( string ex in ar)
{
if (Regex.IsMatch(txtbox.Text, @"^(www\.)([\w]+)\.(" + ex + ")$"))
{
lbl.Text = "True";
}
else
{
lbl.Text = "False";
}
}
}
当我写“www.google.com”时,标签仍会写false
。只有当我写“www.google.org”时,标签才会写true
。
答案 0 :(得分:6)
第一场比赛结束后,您需要立即停止foreach
次迭代。或者,更好的是,
lbl.Text = ar.Any(s => Regex.IsMatch(txtbox.Text, "..." + s + "...")) ? "True" : "False"
另外,请注意WinForms应用程序中的计时器:您只能安全地使用System.Windows.Forms.Timer
,而不是System.Threading.Timer
。
答案 1 :(得分:0)
您正在使用正在完成其全部操作的foreach循环, 因此,当将其与您的条件进行比较时,请从循环中移除控件,例如在数组索引的最后一个组织索引,它为什么在最后的lopp ittrations中找到,编辑你的代码为。
foreach ( string ex in ar)
{
if (Regex.IsMatch(txtbox.Text, @"^(www\.)([\w]+)\.(" + ex + ")$"))
{
lbl.Text = "True";
return;
}
else
{
lbl.Text = "False";
}
}