不少時候處理字符串數據,好比從文件中讀取或者存入 - 咱們可能須要加入分隔符(如CSV文件中的逗號),或使用一個分隔符來合併字符串序列。數組
不少人都知道使用split()的方法,但使用與其對應的Join()方法的人就沒有那麼多。今天,讓咱們看看它們的應用。app
分割符能夠是如下幾種形式中的一種:asp.net
讓咱們在實例中看看:ui
string testString = "James Hare,1001 Broadway Ave,St. Louis,MO,63101";spa
//傳遞的分割能夠是一個數組 string[] results = testString.Split(new[] { ',' });.net
//或者在asp.net 4.0 下傳遞單獨的一個char results = testString.Split(',');code
獲得的結果以下對象
對待一樣的字符串,咱們使用 ‘,’ 和 ‘ ‘ (空格):
string testString = "James Hare,1001 Broadway Ave,St. Louis,MO,63101"; //傳遞一個數組做爲分割的標記 string[] results = testString.Split(new[] { ',', ' ' }); //或者在4.0 下能夠直接這樣傳遞 results = testString.Split(',', ' ');blog
獲得下面的結果:
使用 string 做爲分割符用法是基本同樣的:three
string testString = "James Hare,,1001 Broadway Ave,St. Louis,MO,63101"; string[] results = testString.Split(new[] { ",," }, StringSplitOptions.None);
結果:
注意在這裏咱們必需要提供一個 StringSplitOptions 的選擇.
這個枚舉的類型有兩個值:
最後, Split() 有一個形式是讓你能夠限制返回數組元素數量的. 在這種狀況下,前面 n-1 的 元素基於你的條件生成,最後一個則是剩下的沒有被分割的部分:
string testString = "James Hare,,1001 Broadway Ave,,,St. Louis,MO,63101";
//返回含有兩個元素的數組.
string[] results = testString.Split(new[] { ',' }, 2, StringSplitOptions.None);
for (int i = 0; i < results.Length; i++) { Console.WriteLine("\tElement {0}: \"{1}\"", i, results[i]); }
使用限制數量的結果是:
注意第二個元素還包含了’,’。
類型:System.String 一個由 values 的元素組成的字符串,這些元素以 separator 字符串分隔。
看下面的例子,用StringBuilder來實現串聯一組字符串:
string[] parts = { "Apple", "Orange", "Banana", "Pear", "Peach" };
var builder = new StringBuilder();
for (int i = 0; i < parts.Length; i++) { builder.Append(parts[i]);
// 將最後一個','去掉
if (i != parts.Length - 1) { builder.Append(", "); } }
// 結果是 "Apple, Orange, Banana, Pear, Peach"
var result = builder.ToString();
用 string.Join() 能夠輕鬆實現:
string[] parts = { "Apple", "Orange", "Banana", "Pear", "Peach" }; var result = string.Join(", ", parts);
不少人能夠沒有意識到 Join() 能夠合併任何類型,如 int, DateTime, double, 或其餘自定義的類型!
當調用 string.Join() 合併不是字符串的數值時,它實際上會讓每個元素 ToString(). 也就是說這些元素 ToString() 的定義是符合你的需求的才行 – 雖然大部分asp.net庫中的類型都已經有了.
舉例子:
// 合併整型 "1,2,3,4,5,6,7,8,9,10"
var numsFromOneToTen = string.Join(",", Enumerable.Range(1, 10));
// 合併不一樣類型的數值 ==> "1-3.1415927-9/16/2011 12:52:22 PM"
var variousObjects = string.Join("-", new object[] { 1, 3.1415927, DateTime.Now });
最後, Join() 明顯是支持 IEnumerable<T> 和 object[], string[]:
string[] arr = { "one", "two", "three" }; Console.WriteLine(string.Join(",", arr));
//.net 4.0 中你能夠直接列出全部數值,沒必要要生成數組 var numsFromOneToTen = string.Join(",", "A", "B", "C", "D", "E");
var variousObjects = string.Join("-", 1, 3.1415927, DateTime.Now);
若是你想將一個字符串分割或者串聯一些元素到一個字符串,想一想可否用 Split() 或 Join(). 它們在不少方面都很是有用.