本帖最后由 trunjun 于 2010-12-16 10:34:47 编辑

解决方案 »

  1.   

    string s="";
    foreach(string x in values)
    {
      if(x.ToLower().Contains(s.ToLower())&& x.Length-s.Length<=1)
       lst.Add(x);
    }
    字符串相同部分
    var c=arr1.Intersect(arr2).ToArray();  
     
      

  2.   

    正则就行了。
    string[] values = { "dateTime", "dataTime", "unsgnedShort", "unsignedShort", "unsignadShort", "Zint", "zint" };
    string[] keys = { "dateTime", "unsignedShort", "Zint", "unsignedByte", "Zstring", "Zlong", "binary" };
    StringBuilder builder = new StringBuilder();        
    foreach (string key in keys)
    {
        builder.Append(Regex.Escape(key) + "|");
    }
    builder.Remove(builder.Length - 1, 1);
    Regex reg = new Regex(builder.ToString(), RegexOptions.Compiled | RegexOptions.IgnoreCase);
    List<string> result = new List<string>();
    foreach (string value in values)
    {
        if (reg.IsMatch(value)) result.Add(value);
    }
    //result就是你要的结果//或是Linq
    string[] result_array = (from v in values where reg.IsMatch(v) select v).ToArray();
      

  3.   


    void Main()
    {
        string[] str={
        "dateTime",
    "unsignedShort",
    "Zint",
    "unsignedByte",
    "Zstring",
    "Zlong",
    "binary"};
    string[] values={"dateTime","dataTime","unsgnedShort","unsignedShort","unsignadShort","Zint","zint"};
                   //   {"dateTime","dateTime","unsignedShort","unsignedShort","unsignedShort","Zint","Zint",....}
    var query= from s1 in str
               from s2 in values
       let s11 = s1.ToLower().ToCharArray()
       let s22 = s2.ToLower().ToCharArray()
       where s11.Distinct().Count()-s11.Intersect(s22).Count()<=1 && s1.Length>=s2.Length
       select s1;
    values=query.ToArray();     
    }
      

  4.   

    结果=======逍遥=========
    dateTime
    unsignedShort
    Zint
    zint
    只是列出了匹配的几种类型,貌似我的表达不够清楚。
    我要想返回的是:values 值,即使它里面有写错的或者大小写的,也把它转换成最匹配的值。
      

  5.   

    如果我的  string[] values = {
                                          "dateTime", "dataTime", "unsgnedShort", "unsignedShort", "unsignadShort", "Zint",
                                          "zint","zints","aunsignedByte","unsignedByt","binar","binary"
                                      };
    对于如:aunsignedByte的多一个字符的,貌似没有匹配上,赐教!
      

  6.   

    var query= from s1 in str
       from s2 in values
       let s11 = s1.ToLower().ToCharArray()
       let s22 = s2.ToLower().ToCharArray()
       where s11.Distinct().Count()-s11.Intersect(s22).Count()<=1 && (s1.Length-s2.Length<=1 && s1.Length-s2.Length>=-1)
       select s1 ;
    values=query.ToArray();