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>
///<paramname="str">文本。</param>
///<paramname="keyword">关键字</param>
///<returns>含高亮标识的文本。</returns>
///<remarks>
///1、字母不区分大小写。
///2、CssClass名称为highlight。
///</remarks>
privatestringHighLightKeyword(stringstr,stringkeyword)
{
intindex;
varstartIndex=0;
conststringhighLightBegin="<spanclass='highlight'>";
conststringhighLightEnd="</span>";
varlength=highLightBegin.Length+keyword.Length;
varlengthHighlight=length+highLightEnd.Length;
while((index=str.IndexOf(keyword,startIndex,StringComparison.OrdinalIgnoreCase))>-1)
{
str=str.Insert(index,highLightBegin).Insert(index+length,highLightEnd);
startIndex=index+lengthHighlight;
}
returnstr;
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!