一个TextBox输入关键词,按"搜索"搜出title or content字段中含有关键词的记录在gridview中显示,这个已经实现,想要:
1.如果是在title中搜出的,title全部显示,关键词红色显示,显示content的前面40个字.
2.如果是在content中搜出的,title全部显示,显示content的关键词前后共40个字,关键词红色显示.

解决方案 »

  1.   

    在asp中用replace,left,right很好解决,可是在c#.net中总是不行,不知c#中相关的方法有哪些?
      

  2.   

    c#里用 Substring(start,end)
      

  3.   

    instr,replace.left,right,c#中一一对应或可以取代的有哪些方法?能举例最好.
      

  4.   

    楼主想偷懒    去看一下MSDN 里的 string 类  看一下类成员
      

  5.   

    楼主试试这个(不是很完美,效率也不高):        string keyWord = "人民";//关键字
            string pattern = @"([^" + keyWord + "]{0,40})(" + keyWord + ")(.{0,40})";
            //标题与内容
            string title = "中华人民共和国中华人民共和国";
            string body = "中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国";
            //搜索结果
            string resultTitle = null;
            string resultBody = null;        resultTitle = Regex.Replace(title, "(" + keyWord + ")", "<strong style='color:red;'>$1</strong>");
            if (Regex.IsMatch(body, pattern))
            {
                Match m = Regex.Match(body, pattern);
                string left = m.Groups[1].Value.ToString(); //关键字左边的文字
                string right = m.Groups[3].Value.ToString(); //关键字右边的文字            if (left.Length + right.Length <= 40)   //关键字前后的总字数不足40
                {
                    resultBody = left + "<strong style='color:Red;'>" + keyWord + "</strong>" + right;
                }
                else
                {
                    resultBody = left + "<strong style='color:Red;'>"  + keyWord + "</strong>" + right.Substring(0, 40 - left.Length) + "...";
                }        }
                    Response.Write(resultTitle + "<br />" + resultBody);
      

  6.   

    如果都有怎么办?或者假如 title 命中 content 就不搜了(假如 title 先匹配)?what's 显示content的前面40个字/显示content的关键词前后共40个字 ???如此需求 ....
    冷静思考,动点脑筋,单纯的字符操作 ....数据库 SELECT 中处理,或者 应用程序处理都形,前者效率高,但此查询功能目标也就定死了假如 Content 是 Text 之类的 CLOB 类型,那么只有应用程序中才能 Replace 了