C#中 Regex進行忽略大小寫字串替換

來源:互聯網
上載者:User
在C#裡要進行 忽略 大小寫的字串替換,用string的Replace是很難做到的,即使花了天大的力氣做到了,效率仍然是很低的,正確的方法應該是使用 Regex

 要使用 Regex,首先需要引用命名空間:
using System.Text.RegularExpressions;
然後,非常簡單,使用:
Regex.Replace(字串,要替換的子串,替換子串的字元,RegexOptions.IgnoreCase)
就可以達到目的了,其中最後的參數RegexOptions.IgnoreCase即為指明 忽略 大小寫 但是,我現在要為一組字串中的所有匹配的子字串加上高亮顯示(就是讓它的字型樣式和字串其它的部分不一樣),用下面的語句在字串兩端插入html標籤,確實可以實現高亮,但高亮顯示的就成了搜尋子串的搜尋字串了, 大小寫與原文有差異。 打個比方:我在"第十三種Asp.net實現"中搜尋的keyString為"asp",替換後的字串就成了"第十三種<span class="Highlight">asp</span>.net實現",而不是希望的"第十三種<span class="Highlight">Asp</span>.net實現"
DocumentResume[i]=Regex.Replace(hitDoc.Get("resume"),keyString,"<span class=\"Highlight\">"+keyString+"</span>",RegexOptions.IgnoreCase);
 所以,直接用 Regex的Replace也不能達到我的需要,而要用到 Regex的Match搜尋方法(Match搜尋單條,Matchs多條),然後在匹配的子串前後插入html標籤,具體看下面的代碼:

string pain=hitDoc.Get("resume");//字串
    System.Text.RegularExpressions.MatchCollection m= Regex.Matches(pain,keyString,RegexOptions.IgnoreCase);//忽略大小寫搜尋字串中的關鍵字
    for(int j=0;j<m.Count;j++)//迴圈在匹配的子串前後插東東
    {

     //j×31為插入html標籤使pain字串增加的長度,注意下面兩句不能交換位置,否則將出現HTML標籤插入錯誤。
     pain=pain.Insert((m[j].Index+keyString.Length+j*31),"</span>");//關鍵字後插入html標籤
     pain=pain.Insert((m[j].Index+j*31),"<span class=\"Highlight\">");//關鍵字前插入html標籤
    }

當然,html標籤也不是胡亂插好了就管用的。還要在要顯示這個插完後的字串的頁面代碼的head區加入下面的自訂樣式

<STYLE type=text/css>
<!-- .Highlight {
color: #00FFFF;
font-style: italic;
font-size: larger;
} -->
</STYLE>

 nutian:但Regex方式忽略大小寫替換應該效率不是最高,但也不是最低,一般應用應該可以.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.