資訊
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

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

傳回字串陣列,這個陣列包含這個字串中,由指定的 Unicode 字元陣列之元素所分隔的子字串。 參數指定是否傳回空白的陣列元素。

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

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

參數

separator
類型:System.Char[]
Unicode 字元陣列 (可分隔這個執行個體中的子字串)、不包含分隔符號的空陣列、或 null
options
類型:System.StringSplitOptions
RemoveEmptyEntries 表示要省略傳回陣列中的空陣列元素,否則 None 表示要包含傳回陣列中的空陣列元素。

傳回值

類型:System.String[]
陣列,其元素包含了這個字串中由 separator 內的一個或多個字元所分隔的子字串。 如需詳細資訊,請參閱<備註>一節。

例外狀況條件
ArgumentException

options 不是其中一個 StringSplitOptions 值。

分隔符號字元不會加入傳回陣列的項目中。

如果此執行個體在 separator 中不包含任何字元,則傳回的陣列會由包含此執行個體的單一元素所組成。 如果 separator 參數為 null 或不包含任何字元,則會假設使用空白字元當做分隔符號。 空白字元由 Unicode 標準定義,如果被傳遞至 Char.IsWhiteSpace 方法,會傳回 true 但是,如果在這個方法多載呼叫中的 separator 參數是 null,編譯器多載解析會失敗。 若要明確識別被呼叫的方法,您的程式碼必須表示 null 的型別。 下列範例示範幾種明確識別此多載的方式。


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

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

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

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


separator 的每個項目各定義一個分隔字元。 如果 options 參數為 RemoveEmptyEntries,而且這個執行個體的長度為零,則會傳回空白陣列。

如果 options 參數為 None,且兩個分隔符號為相鄰,或是在此執行個體的開頭或結尾找到一個分隔符號,則對應的陣列元素會包含 Empty

效能考量

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

如果您在分隔字元上分隔字串,請使用 IndexOfIndexOfAny 方法,在字串內找出分隔字元。 如果您在分隔字串上分隔字串,請使用 IndexOfIndexOfAny 方法,找出分隔字串的第一個字元。 然後使用 Compare 方法,判斷在第一個字元之後的字元是否與分隔字串的剩餘字元相等。

此外,如果在多次呼叫 Split 方法時使用同一組字元分割字串,請考慮建立單一陣列,並在每次呼叫方法時參考該陣列。 這會大幅減少每一個方法呼叫的額外負荷。

呼叫者注意事項

在 .NET Framework 3.5 和舊版中,如果將 null 或不包含任何字元的 separator 傳遞至 Split 方法,則方法會使用一組字元來分割字串,這組字元與 Trim 方法用於修剪字串的字元稍有不同。 在 .NET Framework 4 中,兩種方法會使用一組完全相同的 Unicode 空白字元。

下列範例將使用 StringSplitOptions 列舉型別加入或排除 Split 方法所產生的子字串。


// This example demonstrates the String() methods that use
// the StringSplitOptions enumeration.
using System;

class Sample 
{
    public static void Main() 
    {
    string s1 = ",ONE,,TWO,,,THREE,,";
    string s2 = "[stop]" +
                "ONE[stop][stop]" +
                "TWO[stop][stop][stop]" +
                "THREE[stop][stop]";
    char[] charSeparators = new char[] {','};
    string[] stringSeparators = new string[] {"[stop]"};
    string[] result;
// ------------------------------------------------------------------------------
// Split a string delimited by characters.
// ------------------------------------------------------------------------------
    Console.WriteLine("1) Split a string delimited by characters:\n");

// Display the original string and delimiter characters.
    Console.WriteLine("1a )The original string is \"{0}\".", s1);
    Console.WriteLine("The delimiter character is '{0}'.\n", 
                       charSeparators[0]);

// Split a string delimited by characters and return all elements.
    Console.WriteLine("1b) Split a string delimited by characters and " +
                      "return all elements:");
    result = s1.Split(charSeparators, StringSplitOptions.None);
    Show(result);

// Split a string delimited by characters and return all non-empty elements.
    Console.WriteLine("1c) Split a string delimited by characters and " +
                      "return all non-empty elements:");
    result = s1.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries);
    Show(result);

// Split the original string into the string and empty string before the 
// delimiter and the remainder of the original string after the delimiter.
    Console.WriteLine("1d) Split a string delimited by characters and " +
                      "return 2 elements:");
    result = s1.Split(charSeparators, 2, StringSplitOptions.None);
    Show(result);

// Split the original string into the string after the delimiter and the 
// remainder of the original string after the delimiter.
    Console.WriteLine("1e) Split a string delimited by characters and " +
                      "return 2 non-empty elements:");
    result = s1.Split(charSeparators, 2, StringSplitOptions.RemoveEmptyEntries);
    Show(result);

// ------------------------------------------------------------------------------
// Split a string delimited by another string.
// ------------------------------------------------------------------------------
    Console.WriteLine("2) Split a string delimited by another string:\n");

// Display the original string and delimiter string.
    Console.WriteLine("2a) The original string is \"{0}\".", s2);
    Console.WriteLine("The delimiter string is \"{0}\".\n", stringSeparators[0]);

// Split a string delimited by another string and return all elements.
    Console.WriteLine("2b) Split a string delimited by another string and " +
                      "return all elements:");
    result = s2.Split(stringSeparators, StringSplitOptions.None);
    Show(result);

// Split the original string at the delimiter and return all non-empty elements.
    Console.WriteLine("2c) Split a string delimited by another string and " +
                      "return all non-empty elements:");
    result = s2.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);
    Show(result);

// Split the original string into the empty string before the 
// delimiter and the remainder of the original string after the delimiter.
    Console.WriteLine("2d) Split a string delimited by another string and " +
                      "return 2 elements:");
    result = s2.Split(stringSeparators, 2, StringSplitOptions.None);
    Show(result);

// Split the original string into the string after the delimiter and the 
// remainder of the original string after the delimiter.
    Console.WriteLine("2e) Split a string delimited by another string and " + 
                      "return 2 non-empty elements:");
    result = s2.Split(stringSeparators, 2, StringSplitOptions.RemoveEmptyEntries);
    Show(result);
    }

// Display the array of separated strings.
    public static void Show(string[] entries)
    {
    Console.WriteLine("The return value contains these {0} elements:", entries.Length);
    foreach (string entry in entries)
        {
        Console.Write("<{0}>", entry);
        }
    Console.Write("\n\n");
    }
}
/*
This example produces the following results:

1) Split a string delimited by characters:

1a )The original string is ",ONE,,TWO,,,THREE,,".
The delimiter character is ','.

1b) Split a string delimited by characters and return all elements:
The return value contains these 9 elements:
<><ONE><><TWO><><><THREE><><>

1c) Split a string delimited by characters and return all non-empty elements:
The return value contains these 3 elements:
<ONE><TWO><THREE>

1d) Split a string delimited by characters and return 2 elements:
The return value contains these 2 elements:
<><ONE,,TWO,,,THREE,,>

1e) Split a string delimited by characters and return 2 non-empty elements:
The return value contains these 2 elements:
<ONE><TWO,,,THREE,,>

2) Split a string delimited by another string:

2a) The original string is "[stop]ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]".
The delimiter string is "[stop]".

2b) Split a string delimited by another string and return all elements:
The return value contains these 9 elements:
<><ONE><><TWO><><><THREE><><>

2c) Split a string delimited by another string and return all non-empty elements:
The return value contains these 3 elements:
<ONE><TWO><THREE>

2d) Split a string delimited by another string and return 2 elements:
The return value contains these 2 elements:
<><ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]>

2e) Split a string delimited by another string and return 2 non-empty elements:
The return value contains these 2 elements:
<ONE><TWO[stop][stop][stop]THREE[stop][stop]>

*/


.NET Framework

支援版本:4.5.2、4.5.1、4.5、4、3.5、3.0、2.0

.NET Framework Client Profile

支援版本:4、3.5 SP1

可攜式類別庫

支援版本:可攜式類別庫

適用於 Windows 市集應用程式的 .NET

支援版本:Windows 8

適用於 Windows Phone 應用程式的 .NET

支援版本:Windows Phone 8、Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (不支援伺服器核心角色), Windows Server 2008 R2 (SP1 (含) 以後版本支援伺服器核心角色,不支援 Itanium)

.NET Framework 並不支援各種平台的所有版本。如需支援版本的清單,請參閱.NET Framework 系統需求

社群新增項目

顯示:
© 2014 Microsoft