我在窗体上有一些图片框控件。我需要迭代它们并提取图片框名称中的整数。我有以下 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"从正则表达式匹配中获取数字(尽管我的代码不会打扰)。