使用通配符或占位符验证最多2个缺失字符的字符串
本文关键字:2个 字符 字符串 通配符 占位符 验证 | 更新日期: 2023-09-27 17:50:49
我正在处理一个业务层查询,以便根据数据库中的有效条目列表验证条目。我试图验证多达2通配符占位符。例如:XXXX_XX,以_为通配符。为了验证只有一个_的实例,我使用以下代码:
if (DiagCode.Contains("_"))
{
int count=0;
foreach (char c in DiagCode)
{
if(c.ToString() =="_")
count += 1;
}
if (count == 1)
{
int loc = DiagCode.IndexOf("_");
int len = DiagCode.Length;
int end = len - loc;
string diagCodeSubBegin = DiagCode.Substring(0, loc);
string diagCodeSubEnd = DiagCode.Substring(loc, end);
NHCSLINQ.MODEL.DIAGS_ICD10 tblDIAG_ICD102 = (from c in NHCSDB.DIAGS_ICD10s
where c.Code.StartsWith(diagCodeSubBegin)
&& c.Code.EndsWith(diagCodeSubEnd)
select c).SingleOrDefault();
if (tblDIAG_ICD102 != null)
{
return true;
}
}
当我有这样一个条目XX_XX_X时,问题就出现了。我考虑过使用Regex拆分代码,并分别验证每一部分,如下所示。
if (count ==2)
{
string[] lines = Regex.Split(DiagCode, "_");
foreach (string line in lines)
{
int loc = DiagCode.IndexOf("_");
int len = DiagCode.Length;
int end = len - loc;
string diagCodeSubBegin = DiagCode.Substring(0, loc);
string diagCodeSubEnd = DiagCode.Substring(loc, end);
NHCSLINQ.MODEL.DIAGS_ICD10 tblDIAG_ICD102 = (from c in NHCSDB.DIAGS_ICD10s
where c.Code.StartsWith(diagCodeSubBegin)
&& c.Code.EndsWith(diagCodeSubEnd)
select c).SingleOrDefault();
if (tblDIAG_ICD102 != null)
{
return true;
}
}
}
但是,我在重新连接单个字符串作为一个整体与_在适当的地方。一定有更简单的方法来做到这一点吧?
你为什么要重新发明轮子?
TSQL Like有这个,讽刺的是他们使用_。