C# 檢索不區(qū)分大小寫(xiě)并高亮顯示實(shí)例詳解
今日,碰到一個(gè)問(wèn)題:如何在網(wǎng)頁(yè)中高亮顯示不區(qū)分大小寫(xiě)的關(guān)鍵字
例如:文本abcaBcabCaBCabcaBCa,關(guān)鍵字bc,在不區(qū)分大小寫(xiě)的情況,一共有6個(gè)匹配項(xiàng)。
則在網(wǎng)頁(yè)中顯示的是abcaBcabCaBCabcaBCa。
很多人,想到是replace函數(shù)。但是在c# 中replace函數(shù)無(wú)法解決字母大小寫(xiě)問(wèn)題。
例如示例上看,bc,Bc,bC,BC都被搜索到了,卻不能統(tǒng)一替換為一個(gè)文本
以上文字轉(zhuǎn)自大牛“萬(wàn)倉(cāng)一黍“的文章--”高亮顯示不區(qū)分大小寫(xiě)的關(guān)鍵字——ASP“。
但是他的文章寫(xiě)得是ASP版本,今天我寫(xiě)得是C#版本;下面說(shuō)說(shuō)解決辦法。
解決辦法:運(yùn)用 IndexOf
IndexOf(String, Int32, StringComparison)
指定的字符串在當(dāng)前 String 對(duì)象中的第一個(gè)匹配項(xiàng)的索引。
參數(shù)
value類型: System. String 要搜尋的字符串。startIndex類型: System. Int32 搜索起始位置。comparisonType類型: System. StringComparison 指定搜索規(guī)則的枚舉值之一。(OrdinalIgnoreCase:使用序號(hào)排序規(guī)則并忽略被比較字符串的大小寫(xiě),對(duì)字符串進(jìn)行比較。)
代碼
/// <summary> /// 高亮查找關(guān)鍵字。 /// </summary> /// <param name="str">文本。</param> /// <param name="keyword">關(guān)鍵字</param> /// <returns>含高亮標(biāo)識(shí)的文本。</returns> /// <remarks> /// 1、字母不區(qū)分大小寫(xiě)。 /// 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; }
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注