在C#裡要進行忽略大小寫的字符串替換用string的Replace是很難做到的即使花了天大的力氣做到了效率仍然是很低的正確的方法應該是使用正則表達式
要使用正則表達式首先需要引用命名空間
以下是引用片段
using SystemTextRegularExpressions;
然後非常簡單使用
以下是引用片段
RegexReplace(字符串要替換的子串替換子串的字符RegexOptionsIgnoreCase)
就可以達到目的了其中最後的參數RegexOptionsIgnoreCase即為指明忽略大小寫
但是我現在要為一組字符串中的所有匹配的子字符串加上高亮顯示(就是讓它的字體樣式和字符串其它的部分不一樣)用下面的語句在字符串兩端插入html標簽確實可以實現高亮但高亮顯示的就成了搜索子串的搜索字符串了大小寫與原文有差異
打個比方我在第十三種實現中搜索的keyString為asp替換後的字符串就成了第十三種 實現而不是希望的第十三種 實現
以下是引用片段
DocumentResume[i]=RegexReplace(hitDocGet(resume)keyString+keyString+RegexOptionsIgnoreCase);
所以直接用正則表達式的Replace也不能達到我的需要而要用到正則表達式的Match搜索方法(Match搜索單條Matchs多條)然後在匹配的子串前後插入html標簽具體看下面的代碼
以下是引用片段
string pain=hitDocGet(resume);//字符串
SystemTextRegularExpressionsMatchCollection m= RegexMatches(painkeyStringRegexOptionsIgnoreCase);//忽略大小寫搜索字符串中的關鍵字
for(int j=;j
{
//j×為插入html標簽使pain字符串增加的長度注意下面兩句不能交換位置否則將出現HTML標簽插入錯誤
pain=painInsert((m[j]Index+keyStringLength+j*));//關鍵字後插入html標簽
pain=painInsert((m[j]Index+j*));//關鍵字前插入html標簽
}
[NextPage] 當然html標簽也不是胡亂插好了就管用的還要在要顯示這個插完後的字符串的頁面代碼的head區加入下面的自定義樣式
以下是引用片段
<STYLE type=text/css>
<! Highlight {
color: #FFFF;
fontstyle: italic;
fontsize: larger;
} >
</STYLE>
[NextPage] nutian:但正則表達式方式忽略大小寫替換應該效率不是最高,但也不是最低,一般應用應該可以.
當然,html標簽也不是胡亂插好了就管用的。tw.WInGwiT.COM還要在要顯示這個插完後的字符串的頁面代碼的head區加入下面的自定義樣式
以下是引用片段:
<STYLE type=text/css>
<!-- .Highlight {
color: #00FFFF;
font-style: italic;
font-size: larger;
} -->
</STYLE>
[NextPage]nutian:但正則表達式方式忽略大小寫替換應該效率不是最高,但也不是最低,一般應用應該可以.
From:http://tw.wingwit.com/Article/program/net/201311/12465.html