程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#中正則表達式進行忽略大小寫的字符串替換,

C#中正則表達式進行忽略大小寫的字符串替換,

編輯:C#入門知識

C#中正則表達式進行忽略大小寫的字符串替換,


  在C#裡要進行忽略大小寫的字符串替換,用string的Replace是很難做到的,即使花了天大的力氣做到了,效率仍然是很低的,正確的方法應該是使用正則表達式。

  要使用正則表達式,首先需要引用命名空間:

以下是引用片段:

  usingSystem.Text.RegularExpressions;

  然後,非常簡單,使用:

以下是引用片段:

  Regex.Replace(字符串,要替換的子串,替換子串的字符,RegexOptions.IgnoreCase)

  就可以達到目的了,其中最後的參數RegexOptions.IgnoreCase即為指明忽略大小寫

  但是,我現在要為一組字符串中的所有匹配的子字符串加上高亮顯示(就是讓它的字體樣式和字符串其它的部分不一樣),用下面的語句在字符串兩端插入html標簽,確實可以實現高亮,但高亮顯示的就成了搜索子串的搜索字符串了,大小寫與原文有差異。

  打個比方:我在"第十三種Asp.net實現"中搜索的keyString為"asp",替換後的字符串就成了"第十三種 asp.net實現",而不是希望的"第十三種 Asp.net實現"

以下是引用片段:

  DocumentResume[i]=Regex.Replace(hitDoc.Get("resume"),keyString,""+keyString+"",RegexOptions.IgnoreCase);

  所以,直接用正則表達式的Replace也不能達到我的需要,而要用到正則表達式的Match搜索方法(Match搜索單條,Matchs多條),然後在匹配的子串前後插入html標簽,具體看下面的代碼:

以下是引用片段:

  stringpain=hitDoc.Get("resume");//字符串

  system.Text.RegularExpressions.MatchCollectionm=Regex.Matches(pain,keyString,RegexOptions.IgnoreCase);//忽略大小寫搜索字符串中的關鍵字

  for(intj=0;j 

  {

  //j×31為插入html標簽使pain字符串增加的長度,注意下面兩句不能交換位置,否則將出現HTML標簽插入錯誤。

  pain=pain.Insert((m[j].Index+keyString.Length+j*31),"");//關鍵字後插入html標簽

  pain=pain.Insert((m[j].Index+j*31),"");//關鍵字前插入html標簽

  }

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

以下是引用片段:

<STYLEtype=text/css> 

<!--.Highlight{ 

color:#00FFFF; 

font-style:italic; 

font-size:larger; 

}--> 

</STYLE>

  [NextPage] nutian:但正則表達式方式忽略大小寫替換應該效率不是最高,但也不是最低,一般應用應該可以.

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

以下是引用片段:

<STYLEtype=text/css> 

<!--.Highlight{ 

color:#00FFFF; 

font-style:italic; 

font-size:larger; 

}--> 

</STYLE>

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


C語言&& || !分別是什

&是取址運算符,作用是提取一個變量的地址。
比如你定義了一個變量,那麼在編譯時,系統就會在內存中分配一個空間。
而這個空間在內存中的位置就是它的地址。&就提取它的地址。
e.g int a;在編譯時就給它分配一個地址,比如是2000;&a就是2000。
假如先定義了一個整型指針變量p,p=&a;就是把a的地址2000賦給p。運行後p=2000。
又如scanf("%d",&a);當你輸入3時,它會先根據&a知道a的地址,由地址找到a在內存中的空間,再把3寫入這個空間。
*是指針運算符,作用與&相反,它是根據變量的地址取出變量的值。
比如,*a的值就是變量a的值3。
下面是定義和聲明中用到指針的小結
int *p; 定義一個指向整型數據的指針。
int *p[n]; 定義指針數組p,它由n個指向整型數據的指針元素組成。
int (*p)[n]; p為指向含n個元素的一維數組的指針變量。
int *p(); p為返回一個指針的函數,該指針指向整型數據。
int (*p)(); p為指向函數的指針,該函數返回一個整型值
int **p; p是一個指針變量,它指向一個指向整型數據的指針變量。
如果你想系統的了解建議你可以看看譚浩強的《c程序設計》(第三版)這本書通俗易懂。是學習c語言不錯的教材。
 

C語言&& || !分別是什

&是取址運算符,作用是提取一個變量的地址。
比如你定義了一個變量,那麼在編譯時,系統就會在內存中分配一個空間。
而這個空間在內存中的位置就是它的地址。&就提取它的地址。
e.g int a;在編譯時就給它分配一個地址,比如是2000;&a就是2000。
假如先定義了一個整型指針變量p,p=&a;就是把a的地址2000賦給p。運行後p=2000。
又如scanf("%d",&a);當你輸入3時,它會先根據&a知道a的地址,由地址找到a在內存中的空間,再把3寫入這個空間。
*是指針運算符,作用與&相反,它是根據變量的地址取出變量的值。
比如,*a的值就是變量a的值3。
下面是定義和聲明中用到指針的小結
int *p; 定義一個指向整型數據的指針。
int *p[n]; 定義指針數組p,它由n個指向整型數據的指針元素組成。
int (*p)[n]; p為指向含n個元素的一維數組的指針變量。
int *p(); p為返回一個指針的函數,該指針指向整型數據。
int (*p)(); p為指向函數的指針,該函數返回一個整型值
int **p; p是一個指針變量,它指向一個指向整型數據的指針變量。
如果你想系統的了解建議你可以看看譚浩強的《c程序設計》(第三版)這本書通俗易懂。是學習c語言不錯的教材。
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved