c#中分割字符串的幾種方法

最近經常看到論壇中許多帖子詢問如何使用split來分割字符串,我這裏對split做一些簡單的總結,希望能夠對大家有所幫助。下面介紹幾種方法: 

第一種方法:打開vs.net新建一個控制檯項目。然後在Main()方法下輸入下面的程序。 



string s="abcdeabcdeabcde"; 

string[] sArray=s.Split('c'); 

foreach(string i in sArray) 

Console.WriteLine(i.ToString()); 



輸出下面的結果:ab 

deab 

deab 

de 





我們看到了結果是以一個指定的字符進行的分割。如果我們希望使用多個字符進行分割如c,d,e如何做呢?好,我們使用另一種構造方法: 



更改爲 string s="abcdeabcdeabcde 

string[] sArray1=s.Split(new char[3]{'c','d','e'}); 

foreach(string i in sArray1) 

Console.WriteLine(i.ToString()); 



可以輸出下面的結果:ab 

ab 

ab 



除了以上的這兩種方法以外,第三種方法是使用正則表達式。新建一個控制檯項目。然後先添加 using System.Text.RegularExpressions; 

Main() :中更改爲 



System.Text.RegularExpressions 

string content="agcsmallmacsmallgggsmallytx"; 

string[]resultString=Regex.Split(content,"small",RegexOptions.IgnoreCase) 
foreach(string i in resultString) 
Console.WriteLine(i.ToString()); 

輸出下面的結果:agc 
mac 
ggg 
ytx 
使用正則表達式有什麼好處呢? 彆着急,後面我們會看到它的獨特之處。 
下面介紹第4種方法。比如 

string str1="我*****是*****一*****個*****教*****師"; 

如果我希望顯示爲:我是一個教師, ,如何作呢? 我們可以使用下面代碼: 





string str1="我*****是*****一*****個*****教*****師; 

string[] str2; 

str1=str1.Replace("*****","*"); 

str2=str1.Split('*'); 

foreach(string i in str2) 

Console.WriteLine(i.ToString()); 





這樣也可以得到正確結果。但是比如 

string str1="我**是*****一*****個*****教*****師"; 

我希望顯示的結果爲:我是一個教師。 

我如果採用上面的第四種方法來做就會產生下面的錯誤:我 是一個教師 

中間有空格輸出,所以輸出結果並不是我希望的結果,如何解決呢?這就又回到了正則表達式了(這裏可以看到它的功能強大之處),這時可以採用下面的第五種方法: 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章