我有代码在JSON文件中的数据上循环,因此根据第一个、第二个或第三个变量的通配符条件,我正在做regex,然后把它写出来,我真的不喜欢它的样子。
所以可读性和性能很重要,但数据完整性和错误处理等也很重要
写这篇文章的更好方法是什么?
for loop....
var firstWildCard = vidaBiliy.SponsorPackage.Where(s => Regex.IsMatch(s.ExternalPolicy, $"^.*{Regex.Escape(HcdpPmtFctrCd)}{Regex.Escape(hccCpmtFctrCd)}$")).FirstOrDefault()?.PackageID;
if(firstWildCard == null)
{
var secondWildCard = vidaBiliy.SponsorPackage.Where(s => Regex.IsMatch(s.ExternalPolicy, $"^{Regex.Escape(hcdpPlnCvgCD)}.*{Regex.Escape(hccCpmtFctrCd)}$")).FirstOrDefault()?.PackageID;
if(secondWildCard == null)
{
var thirdWildCard = vidaBiliy.SponsorPackage.Where(s => Regex.IsMatch(s.ExternalPolicy, $"^{Regex.Escape(hcdpPlnCvgCD)}{Regex.Escape(HcdpPmtFctrCd)}.*$")).FirstOrDefault()?.PackageID;
}
}
检查
var patterns = new string[]{
$"^.*{Regex.Escape(HcdpPmtFctrCd)}{Regex.Escape(hccCpmtFctrCd)}$",
$"^{Regex.Escape(hcdpPlnCvgCD)}.*{Regex.Escape(hccCpmtFctrCd)}$",
$"^{Regex.Escape(hcdpPlnCvgCD)}{Regex.Escape(HcdpPmtFctrCd)}.*$"
}
var wildcards = new List<String>();
foreach (var pattern in patterns)
{
var matchResult = vidaBiliy.SponsorPackage.Where(s => Regex.IsMatch(s.ExternalPolicy, pattern)).FirstOrDefault()?.PackageID;
wildcards.Add(matchResult);
if (matchResult != null)
break;
}