C# 檢索不區(qū)分大小寫并高亮顯示實例詳解
C# 檢索不區(qū)分大小寫并高亮顯示實例詳解
今日,碰到一個問題:如何在網(wǎng)頁中高亮顯示不區(qū)分大小寫的關鍵字
例如:文本abcaBcabCaBCabcaBCa,關鍵字bc,在不區(qū)分大小寫的情況,一共有6個匹配項。
則在網(wǎng)頁中顯示的是abcaBcabCaBCabcaBCa。
很多人,想到是replace函數(shù)。但是在c# 中replace函數(shù)無法解決字母大小寫問題。
例如示例上看,bc,Bc,bC,BC都被搜索到了,卻不能統(tǒng)一替換為一個文本
以上文字轉自大?!叭f倉一黍“的文章--”高亮顯示不區(qū)分大小寫的關鍵字——ASP“。
但是他的文章寫得是ASP版本,今天我寫得是C#版本;下面說說解決辦法。
解決辦法:運用 IndexOf
IndexOf(String, Int32, StringComparison)
指定的字符串在當前 String 對象中的第一個匹配項的索引。
參數(shù)
value 類型: System. String 要搜尋的字符串。 startIndex 類型: System. Int32 搜索起始位置。 comparisonType 類型: System. StringComparison 指定搜索規(guī)則的枚舉值之一。 (OrdinalIgnoreCase:使用序號排序規(guī)則并忽略被比較字符串的大小寫,對字符串進行比較。)
代碼
/// <summary> /// 高亮查找關鍵字。 /// </summary> /// <param name="str">文本。</param> /// <param name="keyword">關鍵字</param> /// <returns>含高亮標識的文本。</returns> /// <remarks> /// 1、字母不區(qū)分大小寫。 /// 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; }
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關文章
C#中的靜態(tài)字段double.Epsilon實例詳解
double.Epsilon 是C#中的一個靜態(tài)字段,表示 double 數(shù)據(jù)類型的最小可表示的正數(shù)值,這篇文章主要介紹了C#中的靜態(tài)字段double.Epsilon的相關知識,需要的朋友可以參考下2024-01-01C# 使用Microsoft Edge WebView2的相關總結
這篇文章主要介紹了C# 使用Microsoft Edge WebView2的相關總結,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下2021-02-02C#中把任意類型的泛型集合轉換成SQLXML數(shù)據(jù)格式的實例
本文主要分享了C#中把任意類型的泛型集合轉換成SQLXML數(shù)據(jù)格式的實例代碼。具有很好的參考價值,需要的朋友可以看下2016-12-12C#中Request.Cookies 和 Response.Cookies 的區(qū)別分析
本文通過實例代碼向我們展示了C#中Request.Cookies 和 Response.Cookies 的區(qū)別,文章淺顯易懂,這里推薦給大家。2014-11-11