C# 有没有一种方法可以组合foreach循环
我有两份清单如下:C# 有没有一种方法可以组合foreach循环,c#,C#,我有两份清单如下: valuesToMatch = ["someemail@something.com", "123-45-6789"] regexValuesToMatchWith = ["^[a-zA-Z0-9._%+-]+@[a-z0-9-]+\.(com|org|edu|)(\.[a-z]{2,3})?", "^\d{3}-\d{2}-\d{4}$"] 我想将电子邮件与电子邮件正则表达式匹配,将SSN编号与SSN正则表达式匹配。如果两者都是真的,那么只有我可以添加数据,否则不能 pub
valuesToMatch = ["someemail@something.com", "123-45-6789"]
regexValuesToMatchWith = ["^[a-zA-Z0-9._%+-]+@[a-z0-9-]+\.(com|org|edu|)(\.[a-z]{2,3})?", "^\d{3}-\d{2}-\d{4}$"]
我想将电子邮件与电子邮件正则表达式匹配,将SSN编号与SSN正则表达式匹配。如果两者都是真的,那么只有我可以添加数据,否则不能
public bool MatchRegex(Data data)
{
var regexMatch = false;
var valuesToMatch = GetValuesToMatch(data.values);
var regexValuesToMatchWith = service.Validations(data.id);
foreach (var toMatch in valuesToMatch)
{
foreach (var withRegex in regexValuesToMatchWith)
{
var r = new Regex(withRegex, RegexOptions.IgnoreCase);
if (r.IsMatch(toMatch))
{
regexMatch = true;
}
}
}
if (regexMatch)
{
return dbContext.Add(data);
}
return false;
}
我在网上看过一些方法,但我不确定这是否可能实现。也许
for
循环更适合您试图实现的目标
bool regexMatch = true;
for (int i = 0; i < withRegex.Length; i++)
{
var r = new Regex(valuesToMatch[i], RegexOptions.IgnoreCase);
if (!r.IsMatch(regexValuesToMatchWith[i]))
{
regexMatch = false;
break;
}
}
}
bool regexMatch=true;
for(int i=0;i
foreach
循环将每个值与email和SSN regex进行比较,这是不必要的。除此之外,如果您像现在这样将regexMatch
设置为true,那么即使其中一个比较不匹配,它也将为true
根据您的示例,我假设
valuesToMatch
和regexValuesToMatchWith
始终具有相同的大小和正确的数据顺序。上面的代码是否给出了u输出?regex和值的顺序是否相同,项目数是否相同?@Richardissimo,是的。第一个正则表达式值应该是电子邮件等的值。@ershoaib,它返回true或FALSE然后Nathalia的答案就是你需要的,现在她已经纠正了拼写错误,你已经确认了她所做的假设。拼写y
,你需要弄清楚这个答案所做的假设。