好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C# 检索不区分大小写并高亮显示实例详解

C# 检索不区分大小写并高亮显示实例详解

  今日,碰到一个问题:如何在网页中高亮显示不区分大小写的关键字

  例如:文本abcaBcabCaBCabcaBCa,关键字bc,在不区分大小写的情况,一共有6个匹配项。

  则在网页中显示的是abcaBcabCaBCabcaBCa。

  很多人,想到是replace函数。但是在c# 中replace函数无法解决字母大小写问题。

  例如示例上看,bc,Bc,bC,BC都被搜索到了,却不能统一替换为一个文本

       以上文字转自大牛[万仓一黍[的文章--]高亮显示不区分大小写的关键字——ASP[。

       但是他的文章写得是ASP版本,今天我写得是C#版本;下面说说解决办法。

   解决办法:运用 IndexOf

            IndexOf(String, Int32, StringComparison)

            指定的字符串在当前 String 对象中的第一个匹配项的索引。

参数

?

value

类型: System. String

要搜寻的字符串。

startIndex

类型: System. Int32

搜索起始位置。

comparisonType

类型: System. StringComparison

指定搜索规则的枚举值之一。

(OrdinalIgnoreCase:使用序号排序规则并忽略被比较字符串的大小写,对字符串进行比较。)

代码

?

/// <summary>

     /// 高亮查找关键字。

     /// </summary>

     /// <param name="str">文本。</param>

     /// <param name="keyword">关键字</param>

     /// <returns>含高亮标识的文本。</returns>

     /// <remarks>

     ///  1、字母不区分大小写。

     ///  2、CssClass 名称为 highlight。

     /// </remarks>

     private string HighLightKeyword( string str, string keyword)

     {

       int index;

       var startIndex = 0;

       const string highLightBegin = "<span class='highlight'>" ;

       const string highLightEnd = "</span>" ;

       var length = highLightBegin.Length + keyword.Length;

       var lengthHighlight = length + highLightEnd.Length;

 

       while ((index = str.IndexOf(keyword, startIndex, StringComparison.OrdinalIgnoreCase)) > -1)

       {

         str = str.Insert(index, highLightBegin).Insert(index + length, highLightEnd);

         startIndex = index + lengthHighlight;

       }

 

       return str;

     }

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

dy("nrwz");

查看更多关于C# 检索不区分大小写并高亮显示实例详解的详细内容...

  阅读:48次