本文為機器翻譯文章。如需檢視英文版,請選取 [原文] 核取方塊。您也可以將滑鼠指標移到文字上,即可在快顯視窗顯示英文原文。
譯文
原文

String.Split 方法 (String[], StringSplitOptions)

 

根據陣列中的字串分割字串成子字串。 您可以指定子字串是否包含空的陣列元素。

命名空間:   System
組件:  mscorlib (於 mscorlib.dll)

[ComVisibleAttribute(false)]
public string[] Split(
	string[] separator,
	StringSplitOptions options
)

參數

separator
Type: System.String[]

字串陣列 (可分隔這個字串中的子字串)、不含任何分隔符號的空陣列,或 null

options
Type: System.StringSplitOptions

StringSplitOptions.RemoveEmptyEntries 表示要省略傳回陣列中的空陣列項目,否則 StringSplitOptions.None 表示要包含傳回陣列中的空陣列項目。

傳回值

Type: System.String[]

陣列,其項目包含了這個字串中由 separator 內的一或多個字串所分隔的子字串。 如需詳細資訊,請參閱<備註>一節。

Exception Condition
ArgumentException

options 不是其中一個 StringSplitOptions 值。

當一組已知的字串所分隔的字串時,您可以使用Split分隔成子字串的方法。

傳回陣列的項目中不包含分隔符號字串。 例如,如果separator陣列包含字串"-",目前的字串執行個體的值是"aa-bb cc"方法會傳回陣列,其中包含三個項目:"aa"、"bb"和"cc"。

如果這個執行個體不包含任何的字串中separator,傳回的陣列包含這個執行個體的單一項目所組成。

如果options參數是RemoveEmptyEntries和這個執行個體的長度為零,方法會傳回空陣列。

每個項目separator定義不同的分隔符號所組成的一或多個字元。 如果options引數是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 索引處的子字串。

如果有任何項目中separator包含多個字元,將整個子字串會被視為分隔符號。 例如,如果一個中的項目separator為"10",請嘗試分割字串"This10is10a10string。 」 會傳回下列四個元素陣列: {"This"、"is","a"、"string"。 }.

如果separator參數是null未包含任何字元,或空格字元會假設為分隔符號。 空白字元會由 Unicode 標準和傳回true如果傳遞至Char.IsWhiteSpace方法。

如果separator參數在呼叫這個方法多載是null,編譯器多載解析失敗時。 若要明確地識別所呼叫的方法,您的程式碼必須指出的型別null 下列範例顯示數種方式可明確識別這個多載。

string phrase = "The quick  brown fox";
string[] words;

words = phrase.Split(default(string[]), StringSplitOptions.RemoveEmptyEntries);

words = phrase.Split((string[]) null, StringSplitOptions.RemoveEmptyEntries);

words = phrase.Split(null as string[], StringSplitOptions.RemoveEmptyEntries);

Split方法還會擷取由一個或多個字串中分隔這個字串中的子字串separator參數,並傳回這些子字串做為陣列的項目。

Split方法會尋找分隔符號執行比較使用區分大小寫的序數排序規則。 如需 word、 字串和序數排序的詳細資訊,請參閱System.Globalization.CompareOptions列舉型別。

Split方法就會忽略任何項目separator其實null或空字串 ("")。

若要避免模稜兩可的結果時中的字串separator共通字元Split作業從開頭到結尾的執行個體的值,並且在符合中的第一個項目separator等於執行個體中的分隔符號。 基元執行個體中的子字串順序的優先順序高於中項目的順序separator

例如,假設其值為"abcdef"執行個體。 如果中的第一個項目separator"ef",而第二個元素是"bcde"、 split 作業的結果會是字串陣列,其中包含兩個項目,"a"和"f"。 這是因為發生的子字串中的執行個體,"bcde",且會符合中的項目separator之前遇到"f"的子字串。

不過,如果第一個項目separator"bcd",而第二個元素是"bc"、 split 作業的結果會是字串陣列,其中包含兩個項目,"a"和"ef"。 這是因為"bcd"中的第一個分隔符號separator符合執行個體中的分隔符號。 如果分隔符號的順序相反,因此第一個項目為"bc",而第二個項目已"bcd",結果會是字串陣列,其中包含兩個項目,"a"和"def"。

Split方法傳回的陣列物件配置記憶體和String每個陣列元素的物件。 如果您的應用程式需要最佳效能,或管理記憶體配置是關鍵應用程式中,請考慮使用IndexOfIndexOfAny方法,並選擇性地Compare方法,來找出在字串內子字串。

如果您要分割位於分隔字元字串,使用IndexOfIndexOfAny方法來找出字串中的分隔字元。 如果您要分割的分隔符號字串的字串,使用IndexOfIndexOfAny方法來找出第一個字元的分隔符號字串。 然後使用Compare方法,以判斷是否相等的分隔符號字串的其餘字元之後的第一個字元的字元。

此外,如果相同設定的字元用來分割在多個字串Split方法呼叫,請考慮建立單一的陣列,並在每個方法呼叫中參考它。 這會大幅降低每個方法呼叫的額外負擔。

呼叫端注意事項︰

在.NET Framework 3.5和舊版中,如果Split傳遞給方法separator也就是null或未包含任何字元,方法會使用稍微不同的一組字元與字串分隔Trim方法會修剪該字串。 在.NET Framework 4,這兩種方法使用一組完全相同的 Unicode 空白字元。

下列範例說明透過呼叫的字串所傳回陣列中的差異String.Split(String[], StringSplitOptions)方法及其options參數等於StringSplitOptions.NoneStringSplitOptions.RemoveEmptyEntries

using System;

class Example 
{
   public static void Main() 
   {
      string source = "[stop]ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]";
      string[] stringSeparators = new string[] {"[stop]"};
      string[] result;

      // Display the original string and delimiter string.
      Console.WriteLine("Splitting the string:\n   \"{0}\".", source);
      Console.WriteLine();
      Console.WriteLine("Using the delimiter string:\n   \"{0}\"", 
                        stringSeparators[0]);
      Console.WriteLine();                           

      // Split a string delimited by another string and return all elements.
      result = source.Split(stringSeparators, StringSplitOptions.None);
      Console.WriteLine("Result including all elements ({0} elements):", 
                        result.Length);
      Console.Write("   ");
      foreach (string s in result)
      {
         Console.Write("'{0}' ", String.IsNullOrEmpty(s) ? "<>" : s);                   
      }
      Console.WriteLine();
      Console.WriteLine();

      // Split delimited by another string and return all non-empty elements.
      result = source.Split(stringSeparators, 
                            StringSplitOptions.RemoveEmptyEntries);
      Console.WriteLine("Result including non-empty elements ({0} elements):", 
                        result.Length);
      Console.Write("   ");
      foreach (string s in result)
      {
         Console.Write("'{0}' ", String.IsNullOrEmpty(s) ? "<>" : s);                   
      }
      Console.WriteLine();
   }
}
// The example displays the following output:
//    Splitting the string:
//       "[stop]ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]".
//    
//    Using the delimiter string:
//       "[stop]"
//    
//    Result including all elements (9 elements):
//       '<>' 'ONE' '<>' 'TWO' '<>' '<>' 'THREE' '<>' '<>'
//    
//    Result including non-empty elements (3 elements):
//       'ONE' 'TWO' 'THREE'

下列範例會定義包含標點符號和空格字元的分隔符號的陣列。 傳遞的值以及此陣列StringSplitOptions.RemoveEmptyEntriesSplit(String[], StringSplitOptions)方法會傳回從字串的個別字所組成的陣列。

using System;

public class Example
{
   public static void Main()
   {
      string[] separators = {",", ".", "!", "?", ";", ":", " "};
      string value = "The handsome, energetic, young dog was playing with his smaller, more lethargic litter mate.";
      string[] words = value.Split(separators, StringSplitOptions.RemoveEmptyEntries);
      foreach (var word in words)
         Console.WriteLine(word);
   }
}
// The example displays the following output:
//       The
//       handsome
//       energetic
//       young
//       dog
//       was
//       playing
//       with
//       his
//       smaller
//       more
//       lethargic
//       litter
//       mate

Note that the method is called with the options argument set to F:System.StringSplitOptions.RemoveEmptyEntries. This prevents the returned array from includingF:System.String.Empty values that represent empty substring matches between punctuation marks and white-space characters.

通用 Windows 平台
自 8 起供應
.NET Framework
自 2.0 起供應
可攜式類別庫
提供支援︰ 可攜式 .NET 平台
Silverlight
自 2.0 起供應
Windows Phone Silverlight
自 7.0 起供應
Windows Phone
自 8.1 起供應
回到頁首
顯示: