c#_String.Split 方法進階篇

x1angzzz發表於2020-10-08

Split(Char[])

基於分隔符陣列中的字元將字串拆分為多個子字串。

String value = "This is a short string.";
Char delimiter = 's';
String[] substrings = value.Split(delimiter);
foreach (var substring in substrings)
   Console.WriteLine(substring);

這裡過於基礎,不再贅述

Split(Char[], Int32, StringSplitOptions)

基於陣列中的字串將一個字串拆分成最大數量的子字串。 可以指定子字串是否包含空陣列元素

string[] Split (string[] separator, int count, StringSplitOptions options);

//separator:分隔此字串中子字串的字串陣列、不包含分隔符的空陣列或 null。
//count:要返回的子字串的最大數量。
//options:要省略返回的陣列中的空陣列元素,則為 RemoveEmptyEntries;要包含返回的陣列中的空陣列元素,則為 None。

它返回一個陣列,其元素包含此字串中的子字串,這些子字串由 separator 中的一個或多個字串分隔。 

在引數設定為的情況下呼叫方法 options StringSplitOptions.RemoveEmptyEntries 。 這可以防止返回的陣列包含 String.Empty 表示標點符號和空白字元之間的空子字串匹配項的值。

如果 count 引數為零,或者 options 引數為 RemoveEmptyEntries ,並且此例項的長度為零,則返回空陣列

如果 count 此例項中的子字串多於個子字串,則返回 count 值的第一個減1元素返回第一個減號子字串 count ,並且在返回值的最後一個元素中返回此例項中剩餘的字元。

如果 count 大於子字串的數目,則將返回可用的子字串,並且不會引發異常。

Split(String[], StringSplitOptions)

和上一個方法類似

分隔符字串不包含在返回陣列的元素中。 例如,如果 separator 陣列包含字串 "--",而當前字串例項的值為 "aa--bb-cc",則該方法將返回包含三個元素的陣列: "aa"、"bb" 和 "cc"。

如果 options 引數為StringSplitOptions.None ,並且兩個分隔符相鄰,或在此例項的開頭或結尾找到了分隔符,則對應的陣列元素包含 String.Empty 。 例如,如果 separator 包含兩個元素 "-" 和 " _ ",則字串例項的值為 "- _ aa- _ ",而引數的值 options 為 None ,則該方法返回一個字串陣列,其中包含以下五個元素:

  1. String.Empty,它表示位於索引0處的 "-" 子字串之前的空字串。

  2. String.Empty,它表示位於索引0處的 "-" 子字串與索引1處的 "" 子字串之間的空字串。

  3. "aa"

  4. String.Empty,它表示位於索引4的 "" 子字串後面的空字串。

  5. String.Empty,它表示位於索引5的 "-" 子字串之後的空字串。

string[] strnew = strold.Split(new string[]  { "(","," }, StringSplitOptions.RemoveEmptyEntries);

 

相關文章