C#string的Split和Join

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(',')!很多人都很奇怪爲什麼把雙引號改爲單引號就可以了?看了上邊的重載函數該知道答案了

發佈了30 篇原創文章 · 獲贊 7 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章