如何使用带有字符串数组的正则表达式

时间:2015-10-22 15:16:23

标签: c# .net arrays regex

我有一个字符串数组

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

2 个答案:

答案 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";
            }
        }