有一个很大的string字符串,比如string strText="我爱CSDN我爱CSDN我爱CSDN我爱和   谐CSDN我爱CSDN我爱CSDN",要查找其中的和谐关键字,其中关键中可能存在空格或者Tab键,或者两者组合,该怎么实现这个查询呢?string的的indexOf函数好像只能查找出关键字连续的,对于关键字中有空白符的好像查不到。

解决方案 »

  1.   

    去掉空格bool b = strText.replace(" ", "").contains("keyword”));tab,换行这些都一个思路,用正则可以一下全去掉
      

  2.   


    contains不能返回关键字的索引。用正则去掉字符串中的空白符,然后用indexOf查找,此法应该可行。
      

  3.   

    关键在你自己要想明白。
    a bcdabcd
    你搜索ab或是搜索a b。结果是否表示一样?
      

  4.   

    有空格 表示 不同的关键字,不同的含义。            string strText = "我爱CSDN我爱CSDN我爱CSDN我爱和 谐CSDN我爱CSDN我爱CSDN";
                List<string> listKey = new List<string>() { "和谐", "和 谐" };
                List<int> indexs = new List<int>();
                listKey.ForEach(s => indexs.Add(strText.IndexOf(s)));            indexs.ForEach(s => { if (s > -1) Console.WriteLine(s); });
      

  5.   

    如果关键字中的空格个数不一样呢?还有可能是空格和TAb的组合,那不是有很多关键字?
      

  6.   


    我要搜索ab,在字符串中的ab中间可有任意个数的空白符。
      

  7.   

    那就是说搜索ab和 a b效果会是一样的了?
      

  8.   

    这个貌似在数据库里就是用like 和 各种%就可以了
      

  9.   

    这个问题貌似就是字符串是否包含某关键字嘛 用字符串的xxxx属性就ok了吧
      

  10.   

    去掉符号或空格在查询字符串,用contains
      

  11.   

    contains("keyword”));
    这样不知道成不成了
      

  12.   

                string strText = "我爱CSDN我爱CSDN我爱CSDN我爱和 谐CSDN我爱CSDN我爱CSDN";
                string key = "和谐";
                string key2 = "(?is)";
                for (int i = 0; i < key.Length; i++)
                {
                    key2 += key[i].ToString();
                    if(i < key.Length - 1) key2 += @"\s*";
                }            MatchCollection mc = Regex.Match(strText, key2);
                foreach (Match m in mc)
                {
                    m.Value;//匹配出来的值
                }
      

  13.   

    给你个最终答案:
    正则表达式  c#的
    foreach (Match m in Regex.Matches(str, "和([\\s,\\t])*谐"))
                    MessageBox.Show(m.Value);str为你要查找的字符窜,空格和tab
      

  14.   

    不好意思各位,结贴晚了。最后我用正则表达式解决了。表达式为^[\S \s]*(和\s*谐)[\S \s]*$,这样可很方便的获取匹配项和匹配位置。结贴。