当前位置: 移动技术网 > IT编程>开发语言>c# > C# 检索不区分大小写并高亮显示实例详解

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

2019年07月18日  | 移动技术网IT编程  | 我要评论

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

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网