欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-07-06 10:55:26
c# 检索不区分大小写并高亮显示实例详解   今日,碰到一个问题:如何在网页中高亮显示不区分大小写的关键字   例如:文本abcabcabcabca...

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;
    }

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