求解一个模糊匹配的问题 匹配的要求是这样的, 比如我有一个字符串"abcdefgh" 另外一个字符串"abc_dddegawe",如果两个字符串里边同时存在 并且相邻位置一样的话,那么这两个字符串可以理解为是相同的 ,这个要怎么做

解决方案 »

  1.   

    "abcdefgh"
    "abc_dddegawe",
    同时 存在abc 而且abc的相对位置是一样的
      

  2.   

    "abcdefgh"
    "abc_dddegawe",
    "ad_abc_asdf"上面三个字符串都可以理解为相同的
      

  3.   

    http://blog.csdn.net/binqray/article/details/5827821
      

  4.   

    楼主并不说明相邻多少位相等,所以这里认为有2位等就是相等了bool IsEqual(string str1, string str2)
    {
        var list = from s1 in str1 from s2 in str1 select s1 + "" + s2;
        foreach (var s in list)
        {
            if (str2.IndexOf(s) == 0)
                return true;
        }
        return false;
    }
      

  5.   

    static bool  IsEqual(string str1, string str2,int n)
    {
        for(int i=0;i<str2.Length-n+1;i++)
        {
              if(str1.IndexOf(str2.Substring(i,n))>=0)
                 return true;
        }
        return false;
    }
      

  6.   

    bool CompareTwoStrings(string s1, string s2)
    {
        bool[] query = str1.Zip(str2, (x, y) => x == y).ToArray();
        foreach (int i = 1; i < query.GetLength(0); i++)
            if ((query[i - 1] == query[i]) && query[i]) return true;
        return false;
    }
      

  7.   

    不知是否确定至少为2个字符?也凑个热闹,用以前写的稍改:
    string aa1 = "abcdefgh", aa2 = "ad_abc_asdf", aa3 = "";
                for (int a=0;a<aa1 .Length-2 ;a++)
                    if(aa2 .Contains (aa1 .Substring (a,2)))
                        aa3 =aa1 .Substring (a,2) ;//ab被bc替换掉结果是bc,如果想得到的是abc也是有办法的
      

  8.   

    string aa1 = "abcdefgh", aa2 = "ad_abc_asdf", aa3 = "";
                for (int a=0;a<aa1 .Length-2 ;a++)
                    if(aa2 .Contains (aa1 .Substring (a,2)))
                        aa3 +=aa1 .Substring (a,2) ;//ab被bc替换掉结果是bc
                aa3 =new  string( aa3.ToArray ().Distinct().ToArray ());