无法对控件的名称执行正则表达式



我在窗体上有一些图片框控件。我需要迭代它们并提取图片框名称中的整数。我有以下 coe,它使用文本工作,但在使用控件中的名称时不起作用。

工程:

    Regex rx = new Regex(@"[0-9]?[0-9].");
    for (int i = 0; i < pbControls.Count; i++)
    {
        Match m = rx.Match("pictureBox8");
        Console.WriteLine(m);
    }

不匹配:

    Regex rx = new Regex(@"[0-9]?[0-9].");
    for (int i = 0; i < pbControls.Count; i++)
    {
        Match m = rx.Match(pbControls[i].Name, 0);
        Console.WriteLine(m);
    }

我什至尝试将图片框名称放在字符串中。字符串写入控制台,但我仍然没有得到匹配。

    Regex rx = new Regex(@"[0-9]?[0-9].");
    for (int i = 0; i < pbControls.Count; i++)
    {
        string s = pbControls[i].Name;
        Console.WriteLine(s);
        Match m = rx.Match(s);
        Console.WriteLine(m);
    }

关于控件名称和正则表达式,我有什么不了解的?

试试这个:

private void button4_Click(object sender, EventArgs e)
{
    var regex = new Regex(@"pictureBox(?<num>d+)");
    foreach (var ctrl in Controls)
    {
        if (ctrl is PictureBox pb)
        {
            if (regex.IsMatch(pb.Name))
            {
                Debug.WriteLine(pb.Name);
            }
        }
    }
}

它写出了我的"pictureBox1"和"pictureBox2"控件的名称,但没有写出"pictureBoxNoNumber"控件的名称。 您可以使用名称"num"从正则表达式匹配中获取数字(尽管我的代码不会打扰)。

最新更新