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:使用序號排序規則並忽略被比較字符串的大小寫,對字符串進行比較。)
代碼
 1        /// <summary>
 2        /// 高亮查找關鍵字。
 3        /// </summary>
 4        /// <param name="str">文本。</param>
 5        /// <param name="keyword">關鍵字</param>
 6        /// <returns>含高亮標識的文本。</returns>
 7        /// <remarks>
 8        ///    1、字母不區分大小寫。 
 9        ///    2、CssClass 名稱為 highlight。
10        /// </remarks>
11         private string HighLightKeyword(string str, string keyword)
12         {
13             int index;
14             var startIndex = 0;
15             const string highLightBegin = "<span class='highlight'>";
16             const string highLightEnd = "</span>";
17             var length = highLightBegin.Length + keyword.Length;
18             var lengthHighlight = length + highLightEnd.Length;
19 
20             while ((index = str.IndexOf(keyword, startIndex, StringComparison.OrdinalIgnoreCase)) > -1)
21             {
22                 str = str.Insert(index, highLightBegin).Insert(index + length, highLightEnd);
23                 startIndex = index + lengthHighlight;
24             }
25 
26             return str;
27         }

歡迎大家來吐糟!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM