查询某个字符串是否在另一个以逗号连接的字符串中的最高效的方法是什么?
如ab是否在aa,aab,ac,bc中,结果应该是不在。
最好别用循环

解决方案 »

  1.   

     
               string input = "aa,aab,ac,bc";
                string[] splittedStrings = input.Split(new char[] { ',' });
                if (Array.IndexOf<string>(splittedStrings, "ac") == -1)
                {
                    Console.WriteLine("not found");
                }
                else
                {
                    Console.WriteLine("found");
                }
      

  2.   


    void Main()
    {
    if("aa,aab,ac,bc".Split(',').Where(s=>s=="ab").Count()>0)
    {
    Console.WriteLine("存在");
    }
    else
    {
    Console.WriteLine("不存在");
    }
    }
      

  3.   


    void Main()
    {
    if(Regex.IsMatch("aa,aab,ac,bc",@"\bab\b"))
    {
    Console.WriteLine("存在");
    }
    else
    {
    Console.WriteLine("不存在");
    }
    }
      

  4.   

    正则是一种解决方案,但不是最高效的            if (Regex.IsMatch("aa,aab,ac,bc", "(^|,)ab(,|$)"))
                {
                    richTextBox2.Text = "包含!";
                }
                else
                {
                    richTextBox2.Text = "不包含!";
                }
      

  5.   


    //字符串前后添加逗号后 再用IndexOf  提高效率
    void Main()
    {
    if((","+"aa,aab,ac,bc"+",").IndexOf(",ab,")>0)
    {
    Console.WriteLine("存在");
    }
    else
    {
    Console.WriteLine("不存在");
    }
    }
      

  6.   


    void Main()
    {
        if((","+"aa,aab,ac,bc"+",").IndexOf(",ab,")>=0) //此处更正
        {
        Console.WriteLine("存在");
        }
        else
        {
        Console.WriteLine("不存在");
        }
    }
      

  7.   

    string a="";
    var result =from q in str.Split(',') where q.Equals(a) select q;