C#中使用split分割字串的幾種方法小結

NO IMAGE

http://www.111cn.net/net/160/46392.htm

http://blog.sina.com.cn/s/blog_a401a1ea0101f8kx.html

1、用字串分隔:

using System.Text.RegularExpressions;
string str=”aaajsbbbjsccc”;
string[] sArray=Regex.Split(str,”js”,RegexOptions.IgnoreCase);
foreach (string i in sArray) Response.Write(i.ToString() “<br>”);
輸出結果:
aaa
bbb
ccc

2、用多個字元來分隔:

 程式碼如下 複製程式碼
string str=”aaajbbbscccjdddseee”; 
string[] sArray=str.Split(new char[2] {‘j’,’s’}); 
foreach(string i in sArray) Response.Write(i.ToString() “<br>”); 
輸出結果:
aaa
bbb
ccc
ddd
eee

3、用單個字元來分隔:

 程式碼如下 複製程式碼

string s=abcdeabcdeabcde;
string[] sArray=s.Split(c) ;
foreach(string i in sArray) 
Console.WriteLine(i.ToString());
輸出下面的結果:
ab
deab
deab
de

string[] arr = str.Split(“o”);
這是一個具有語法錯誤的語句,Split 的 separator 引數應該是 char[] 或 string[],不應是字串。正確的示例:

 程式碼如下 複製程式碼

string str = “technology”;
char[] separator = { ‘o’ };
string[] arr = str.Split(separator);


正規表示式

首先在程式中需要引用正規表示式相關的程式集:using System.Text.RegularExpressions;
然後使用方法如下:

 程式碼如下 複製程式碼

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

輸出下面的結果:

agc
mac
ggg
ytx


#中Split分隔字串時,如果分隔符為一個字元,一般情況下返回的字元陣列長度是預期的。
但當分隔符為多個字元時,比如  str.Split(“|||”.ToCharArray()) ,返回的字元陣列中可能會多出預期的長度,陣列中會出現一些值為空的字串元素。
這時我們可以採用正規表示式來分割,你可能需要對正規表示式比較熟悉,不過一般需要用到的正規表示式都比較簡單:

 程式碼如下 複製程式碼
string[] arr = Regex.Split( str, @”|||” ,RegexOptions.IgnoreCase );

注意:| 在正規表示式中是保留字元,需要用””轉義。
分割文字域中以回車換行的例子:

 程式碼如下 複製程式碼
string[] arr = Regex.Split( str , “rn” )

 

<div id=”overloadedMembersSection” class=”section” name=”collapseableSection”>

名稱 說明
String.Split (Char[])返回包含此例項中的子字串(由指定 Char 陣列的元素分隔)的 String 陣列。

由 .NET Compact Framework 支援。

String.Split (Char[], Int32)返回包含此例項中的子字串(由指定 Char 陣列的元素分隔)的 String 陣列。引數指定返回的子字串的最大數量。
String.Split (Char[], StringSplitOptions)返回包含此字串中的子字串(由指定的 Char 陣列的元素分隔)的 String 陣列。引數指定是否返回空陣列元素。
String.Split (String[], StringSplitOptions)返回包含此字串中的子字串(由指定的 String 陣列的元素分隔)的 String 陣列。引數指定是否返回空陣列元素。
String.Split (Char[], Int32, StringSplitOptions)返回包含此字串中的子字串(由指定的 Char 陣列的元素分隔)的 String 陣列。引數指定要返回子字串的最大數量,以及是否要返回空陣列元素。
String.Split (String[], Int32, StringSplitOptions)返回包含此字串中的子字串(由指定的 String 陣列的元素分隔)的 String 陣列。引數指定要返回子字串的最大數量,以及是否要返回空陣列元素。

===================================

1、用字串分隔:
using System.Text.RegularExpressions;
string str=”aaajsbbbjsccc”;
string[] sArray=Regex.Split(str,”js”,RegexOptions.IgnoreCase);
foreach (string i in sArray)
Response.Write(i.ToString()   “
“);
輸出結果:
aaa
bbb
ccc
2、用多個字元來分隔:
string str=”aaajbbbscccjdddseee”;
string[] sArray=str.Split(new char[2] {‘j’,’s’});
foreach(string i in sArray)
Response.Write(i.ToString()   “
“);
輸出結果:
aaa
bbb
ccc
ddd
eee
3、用單個字元來分隔:
string str=”aaajbbbjccc”;
string[] sArray=str.Split(‘j’);
foreach(string i in sArray)
Response.Write(i.ToString()   “
“);
輸出結果:
aaa
bbb
ccc
////////////////////////////////////////////////
string[] arr = str.Split(“o”);

這是一個具有語法錯誤的語句,Split 的 separator 引數應該是 char[] 或 string[],不應是字串。正確的示例:

string str = “technology”;
char[] separator = { ‘o’ };
string[] arr = str.Split(separator);
////////////////////////////////////////////////////
String.Split 方法有6個過載函式:
程式程式碼
1) public string[] Split(params char[] separator)
2) public string[] Split(char[] separator, int count)
3) public string[] Split(char[] separator, StringSplitOptions options)
4) public string[] Split(string[] separator, StringSplitOptions options)
5) public string[] Split(char[] separator, int count, StringSplitOptions options)
6) public string[] Split(string[] separator, int count, StringSplitOptions options)

下邊我們通過一些例項來說明下怎麼使用(以下string words = “1,2.3,,4”;):
1. public string[] Split(params char[] separator)
程式程式碼
string[] split = words.Split(new Char[] { ‘,’ });//返回:{“1″,”2.3″,””,”4″}
string[] split = words.Split(new Char[] { ‘,’, ‘.’ });//返回:{“1″,”2″,”3″,””,”4″}
2. public string[] Split(char[] separator, int count)
程式程式碼
string[] split = words.Split(new Char[] { ‘,’, ‘.’ }, 2);//返回:{“1″,”2.3,,4”}
string[] split = words.Split(new Char[] { ‘,’, ‘.’ }, 6);//返回:{“1″,”2″,”3″,””,”4″}
3. public string[] Split(char[] separator, StringSplitOptions options)
程式程式碼
string[] split = words.Split(new Char[] { ‘,’, ‘.’ }, StringSplitOptions.RemoveEmptyEntries);//返回:{“1″,”2″,”3″,”4”} 不保留空元素
string[] split = words.Split(new Char[] { ‘,’, ‘.’ }, StringSplitOptions.None);//返回:{“1″,”2″,”3″,””,”4″} 保留空元素
4. public string[] Split(string[] separator, StringSplitOptions options)
程式程式碼
string[] split = words.Split(new string[] { “,”, “.” }, StringSplitOptions.RemoveEmptyEntries);//返回:{“1″,”2″,”3″,”4”} 不保留空元素
string[] split = words.Split(new string[] { “,”, “.” }, StringSplitOptions.None);//返回:{“1″,”2″,”3″,””,”4″} 保留空元素
5. public string[] Split(char[] separator, int count, StringSplitOptions options)
程式程式碼
string[] split = words.Split(new Char[] { ‘,’, ‘.’ }, 2, StringSplitOptions.RemoveEmptyEntries);//返回:{“1″,”2.3,,4”} 不保留空元素
string[] split = words.Split(new Char[] { ‘,’, ‘.’ }, 6, StringSplitOptions.None);//返回:{“1″,”2″,”3″,””,”4″} 保留空元素
6. public string[] Split(string[] separator, int count, StringSplitOptions options)
程式程式碼
string[] split = words.Split(new string[] { “,”, “.” }, 2, StringSplitOptions.RemoveEmptyEntries);//返回:{“1″,”2.3,,4”} 不保留空元素
string[] split = words.Split(new string[] { “,”, “.” }, 6, StringSplitOptions.None);//返回:{“1″,”2″,”3″,””,”4″} 保留空元素
需要注意的是沒有過載函式public string[] Split(string[] separator),所以我們不能像VB.NET那樣使用words.Split(“,”),而只能使用words.Split(‘,’)