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; }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
下一篇: 实现可自定义的Android滑动删除