Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在字符串中匹配每个字符_C#_String_Matching - Fatal编程技术网

C# 在字符串中匹配每个字符

C# 在字符串中匹配每个字符,c#,string,matching,C#,String,Matching,我正在尝试将用户输入与模式“ran,om”匹配,其中“ran om将按顺序匹配精确字符,而”“可以匹配任何字符。程序将在arrayList字典{rammm,random,ranom}中查找单词,例如,random将匹配,但ranom不会匹配 我已经编写了以下代码,但它只发现任何单词包含用户输入中的任何字符: for (int i = 0; i < userinput.Length; i++) { foreach (string line in dictionary)

我正在尝试将用户输入与模式“ran,om”匹配,其中“ran om将按顺序匹配精确字符,而”“可以匹配任何字符。程序将在arrayList字典{rammm,random,ranom}中查找单词,例如,random将匹配,但ranom不会匹配

我已经编写了以下代码,但它只发现任何单词包含用户输入中的任何字符:

for (int i = 0; i < userinput.Length; i++)
{

        foreach (string line in dictionary)

            if (line[i] == userinput[i])
            {
                Matching.Add(line);
            }
        foreach (string line in FirstCom)
            Console.WriteLine(line);
}
for(int i=0;i
有人能帮我弄清楚下一步该做什么吗?(注意:本程序中不会使用正则表达式)

这个怎么样:

    public static bool IsMatch(string pattern, string line)
    {
        var patternSplit = pattern.Split(',');
        if (!line.StartsWith(patternSplit[0])) return false;
        if(patternSplit.Count() > 2){
           for (var i = 1; i < patternSplit.Count() - 1; i++)
           {
               if (!line.Contains(patternSplit[i])) return false;
           }
        }
        if (!line.EndsWith(patternSplit[patternSplit.Count() - 1])) return false;
        return true;
    }


static void Main(string[] args)
        {
            var matchingData = "quick brown fox jumped over a lazy dog";
            var failingData = "I am batman";
            var pattern = "qu,pe,ov,og";
            if(IsMatch(pattern, matchingData))Console.WriteLine("{0} matches pattern {1}", pattern, matchingData);
            if(!IsMatch(pattern, failingData)) Console.WriteLine("{0} does not match {1}", pattern, failingData);
            Console.ReadKey();
        }
公共静态bool IsMatch(字符串模式、字符串行)
{
var patternSplit=pattern.Split(',');
如果(!line.StartsWith(patternspilt[0])返回false;
如果(patternspilt.Count()>2){
对于(var i=1;i
这就是正则表达式存在的原因-如果需要实现正则表达式引擎(或正则表达式引擎的轻型版本),请使用它们或显示您试图编写的代码,并详细说明您在该代码中遇到的问题您自己。感谢您对详细代码参考的帮助!它几乎是完美的,但我有一个问题:当模式中有多个“,”时,您建议测试该行是否包含拆分,因此如果用户输入匹配任何拆分,IsMatch将返回true。例如,对于arraylist{random,raedom,randem}用户输入'r\u n\u o\u',程序将匹配所有三个单词。如果我误解了字符串,请更正。Contains。再次感谢您的时间!这是正确的@Kay,这就是我试图做的。它应该匹配
,在开始时,它应该匹配
,在结束时,如果有两个以上的
,则它应该匹配在这种情况下,对于一个类似学术的较长单词,如果你放进“A,A,E,M,C”的模式,你建议的方法将匹配第一个A、最后一个E和中间的三个分支(A,E,M),例如“ACDDIC,AcDIC,AcDunic”。“一切都符合规则,但他们不应该这样。我试图找到与我猜包含的模式完全匹配的模式,但这还不够好。如果您有任何解决该问题的想法,我们将不胜感激。谢谢大家!@Kay那么应该清楚地定义
可以匹配多少个字符。否则,它将匹配中间的所有内容(根据我的代码)