- string s = "123a223a456a63223sa";
- string[] sArray = s.Split('a');
- MessageBox.Show(sArray[0]);
- MessageBox.Show(sArray[1]);
- MessageBox.Show(sArray[2]);
- MessageBox.Show(sArray[3]);
string s = "123a223a456a63223sa";
string[] sArray = s.Split('a');
int j = 0;
MessageBox.Show(sArray[0]);
MessageBox.Show(sArray[1]);
MessageBox.Show(sArray[2]);
MessageBox.Show(sArray[3]);
這樣結果也是
123
223
456
63223s
C#中使用split分割字符串的幾種方法
第一種方法:
- string s=abcdeabcdeabcde;
- string[] sArray=s.Split(c) ;
- foreach(string i in sArray)
- Console.WriteLine(i.ToString());
string s=abcdeabcdeabcde;
string[] sArray=s.Split(c) ;
foreach(string i in sArray)
Console.WriteLine(i.ToString());
輸出下面的結果:
ab
deab
deab
de
第二種方法:
我們看到了結果是以一個指定的字符進行的分割。使用另一種構造方法對多個字符進行分割:
- string s=abcdeabcdeabcde
- string[] sArray1=s.Split(new char[3]{c,d,e}) ;
- foreach(string i in sArray1)
- Console.WriteLine(i.ToString());
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;
- string content=agcsmallmacsmallgggsmallytx;
- string[]resultString=Regex.Split(content,small,RegexOptions.IgnoreCase)
- foreach(string i in resultString)
- Console.WriteLine(i.ToString());
- //regexOptions.IgnoreCase是不區分small在字符串content中的大小寫
輸出下面的結果:
agc
mac
ggg
ytx
第四種方法:
- string str1=我*****是*****一*****個*****教*****師;
- string[] str2;
- str1=str1.Replace(*****,*) ;
- str2=str1.Split(*) ;
- foreach(string i in str2)
- Console.WriteLine(i.ToString());
string str1=我*****是*****一*****個*****教*****師;
string[] str2;
str1=str1.Replace(*****,*) ;
str2=str1.Split(*) ;
foreach(string i in str2)
Console.WriteLine(i.ToString());
第五種方法:
string str1=我**是*****一*****個*****教*****師;
我希望顯示的結果為:我是一個教師。
我如果采用上面的第四種方法來做就會產生下面的錯誤:我 是一個教師。中間有空格輸出,所以輸出結果并不是希望的結果,這就又回到了正則表達式了,這時可以采用下面的第五種方法:
- string str1=我**是*****一*****個*****教*****師;
- string[] str2 = System.Text.RegularExpressions.Regex.Split(str1,@[*]+);
- foreach(string i in str2)
- Console.WriteLine(i.ToString());
string str1=我**是*****一*****個*****教*****師;
string[] str2 = System.Text.RegularExpressions.Regex.Split(str1,@[*]+);
foreach(string i in str2)
Console.WriteLine(i.ToString());
這里通過[*]+ 巧妙的完成了我們的目標。
例如我想取得一個ftp里的用戶名及密碼(服務器等)值(用IE當FTP時或從表中取出FTP的值)。
下面是我的解決思路:
設url為收到的URL值,這里指:url=ftp://username:password@server,請注意這句話的規律
我想大家都看清楚這個URL里的規律了吧,就是各個部分都被":"給區分成三個部分,即:ftp、//username、password@server
首先將這個URL的各個部分區分開來,用split(url, ":")
以下是具體的代碼:
parts = split(url, ":") '此時parts就有三部分,parts(0)=ftp,parts(1)=//username,parts(2)=password@server'接下來剔除沒有用到的信息'由于只取username,所以其中parts(0)跟parts(2)是無用的,直接不引用!newname=replace(parts(1), "http://", "") '去除//符號,因為這不是username里的內容'此時的newname既為用戶名。
以上是只取用戶名的代碼,如果你要再取密碼的話,可以參考下面。
'由于用戶名是屬于parts(2)里的,而且包含服務器的信息,如果不取服務器,則:newpass = left(parts(2), instr(parts(2),"@")-1) '取值到@之前的位數。此時的newpass取為密碼
以上代碼為不取服務器地址的代碼,如果有取服務器的話,其實也是很簡單的
newparts=split(parts(2),"@") '此時newparts分成兩部分:newparts(0)為密碼,即password;newparts(1)則為服務器地址,即server'如果要輸出密碼的的話,直接response.write newparts(0)就可以了,服務器就newparts(1)
后話,對于要取一字符串中的某些字符或部分,只要抓住規律,再加上用split就可以很好做成各種效果。