C# 中 string 的 Split 方法將字符串分隔後返回字符串數組。
先看一下我常用的方法
如字段Ps_Class存儲的值是:1,2,3
string psclass = dr["Ps_Class"].ToString();
string[] sArray = psclass.Split(',');
foreach(string i in sArray)
{
Console.WriteLine(i.ToString());
}
輸入爲:
1
2
3
看了下網上的示例,有很多類似如下的示例:
string[] arr = str.Split("o");
這是一個具有語法錯誤的語句,Split 的 separator 參數應該是 char[] 或 string[],不應是字符串。正確的示例:
string str = "technology";
char[] separator = { 'o' };
string[] arr = str.Split(separator);
Split 有六個重載函數,大概有兩類:一類的 separator 爲 char[];另一類爲 string[]。我們以 string[] 爲例講述它的兩個重載函數。
String.Split(string[] separator, StringSplitOptions options);
String.Split(string[] separator, int count, StringSplitOptions options);
separator 爲分隔字符串的字符串數組,由於是數組,可以同時使用多個“分隔符”了。
options 有兩個值可選:StringSplitOptions.None 分隔後遇到的空字符串要作爲數組元素的一項返回;StringSplitOptions.RemoveEmptyEntries 分隔後遇到的空字符串不作爲數組元素的一項返回。
count 分隔後返回的數組的最大長度。
在研究公交發現了自己對split還是認識少了!
公交數據:
.廣州060501|數據製作:|更新時間:2006-04-30 00:43:43
101路↑ 海印橋站-星之光電器城站-白雲路站-越秀南路站-省博物館站-文明路站-大南路站-解放中路站-迎賓館站-越秀公園站-桂花崗站-三元里站-機場路站:{06:00-01:10}
101路↓ 機場路站-中醫學院站-桂花崗站-越秀公園站-迎賓館站-解放中路站-起義路口站-大南路站-文明..路站-省博物館站-越秀南路站-白雲路站-星之光電器城站-海印橋站:{06:00-01:10}
.....
string[] txtLines = dat.Substring(dat.IndexOf("/r/n")).Split(new string[] { "/r/n" }, StringSplitOptions.RemoveEmptyEntries);
這句的意思是 從dat的數據中第一個換行開始截取
取得的 是
101路↑ 海印橋站-星之光電器城站-白雲路站-越秀南路站-省博物館站-文明路站-大南路站-解放中路站-迎賓館站-越秀公園站-桂花崗站-三元里站-機場路站:{06:00-01:10}
101路↓ 機場路站-中醫學院站-桂花崗站-越秀公園站-迎賓館站-解放中路站-起義路口站-大南路站-文明..路站-省博物館站-越秀南路站-白雲路站-星之光電器城站-海印橋站:{06:00-01:10}
.....
然後從這數據中 利用換行符 分割成 string 數組
StringSplitOptions.RemoveEmptyEntries 是去掉 空的
"/r/n" 是換行
String.Join 方法
String.Join (String, String[]) 在指定 String 數組的每個元素之間串聯指定的分隔符 String,從而產生單個串聯的字符串
string [] txtLines={fck,fuckdfd,f};
string jn = string.Join("-", txtLines);
jn="fck-fuckdfd-f";
-------------------------------------------------------------------------------------------------------------------------------
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(',')!很多人都很奇怪爲什麼把雙引號改爲單引號就可以了?看了上邊的重載函數該知道答案了