使用通配符或占位符验证最多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;
                            }
                        }
                    }

但是,我在重新连接单个字符串作为一个整体与_在适当的地方。一定有更简单的方法来做到这一点吧?

使用通配符或占位符验证最多2个缺失字符的字符串

你为什么要重新发明轮子?
TSQL Like有这个,讽刺的是他们使用_。