陋室铭
永远也不要停下学习的脚步(大道至简至易)

posts - 2169,comments - 570,views - 413万

在搜索关键词高亮中一般的方法都是采用替换的办法(Replace)这个方法有一个缺点就是不能区分大小写的问题。在网上找了找发现有人用正则表达式的方法来解决这个问题还真不错,效率也比较高,归纳如下,有用得到的朋友可以一试。

        //搜索关键词高亮显示函数         public static string HighLightKeyWord(string  pain,string keyword)         {

            //搜索关键词高亮函数By JN 2006.11.30              System.Text.RegularExpressions.MatchCollection m = Regex.Matches(pain, keyword,  RegexOptions.IgnoreCase);             //忽略大小写搜索字符串中的关键字             for  (int j = 0; j < m.Count; j++)//循环在匹配的子串前后插东东              {                 //j×31为插入html标签使pain字符串增加的长度:                 pain =  pain.Insert((m[j].Index + keyword.Length + j * 31),  "</font>");//关键字后插入html标签                 pain =  pain.Insert((m[j].Index + j * 31), "<font  color=#ff0000>");//关键字前插入html标签             }

            //搜索关键词高亮函数By JN 2006.11.30             return  pain;         }

当然用之前引用先:using System.Web.UI.HtmlControls;

还有:using System.Text.RegularExpressions;(小鱼加)

以上代码有问题:同一句中有多个关键字时出问题

试一下这个先

/// <summary>         /// 替换关键字为红色         ///  </summary>         /// <param  name="keycontent">原始内容</param>         /// <param  name="k">关键字,支持多关键字</param>         ///  <returns>String</returns>         /// <author>haver  Guo</author>         public static string Highlightkeywords(string  keycontent, string k)         {             string resultstr =  keycontent;             if (k.Trim().IndexOf(' ') >  0)             {                 string[] myArray = k.Split('  ');                 for (int i = 0; i < myArray.Length;  i++)                 {                     resultstr =  resultstr.Replace(myArray[i].ToString(), "<font color=#FF0000>" +  myArray[i].ToString() +  "</font>");                 }                 return  resultstr;             }             else             {                 return  resultstr.Replace(k, "<font color=#FF0000>" + k +  "</font>");             }         } 经测,可用

 

      public static string red(string theField, string fkeywords)
       
{
            string red;
            red = theField.Replace(fkeywords,
"<font color=\"red\">" + fkeywords + "</font>");
           
return red;
        }

posted on   宏宇  阅读(523)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2011-01-15 Fusioncharts的数字格式化(转)
2009-01-15 sql中datepart和datename函数
2009-01-15 基姆拉尔森计算公式(C#方法转换日期为星期几)
2008-01-15 .NET Framework 概念概述
< 2013年1月 >
30 31 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9

点击右上角即可分享
微信分享提示