本文由机器翻译。若要查看英语原文,请勾选“英语”复选框。 也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语

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

 

发布日期: 2016年7月

基于数组中的字符将字符串拆分为多个子字符串。 可以指定子字符串是否包含空数组元素。

命名空间:   System
程序集:  mscorlib(位于 mscorlib.dll)

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

参数

separator
Type: System.Char[]

分隔此字符串中子字符串的字符数组、不包含分隔符的空数组或 null

options
Type: System.StringSplitOptions

要省略返回的数组中的空数组元素,则为 StringSplitOptions.RemoveEmptyEntries;要包含返回的数组中的空数组元素,则为 StringSplitOptions.None

返回值

Type: System.String[]

一个数组,其元素包含此字符串中的子字符串,这些子字符串由 separator 中的一个或多个字符分隔。 有关详细信息,请参阅“备注”部分。

Exception Condition
ArgumentException

options 不是 StringSplitOptions 值之一。

分隔符字符 (中的字符separator数组) 不包括在返回数组的元素。 例如,如果separator数组包含字符"-"和当前的字符串实例的值是"aa bb cc",该方法返回一个数组,包含三个元素:"aa"、"bb"和"抄送"。

如果此实例不包含任何中的字符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参数是null或不包含任何字符,空白字符都被认为是分隔符。 由 Unicode 标准和返回定义空白字符true如果它们传递给Char.IsWhiteSpace方法。

如果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);

Split方法提取由一个或多个中的字符分隔此字符串中子字符串separator参数,并将这些子字符串作为数组的元素返回。

Split方法执行使用区分大小写的序号排序规则的比较,从而查找分隔符。 有关 word、 字符串和顺序排序的详细信息,请参阅System.Globalization.CompareOptions枚举。

Split方法返回的数组对象分配内存和String每个数组元素的对象。 如果你的应用程序需要最佳性能,或你的应用程序管理内存分配至关重要,请考虑使用IndexOfIndexOfAny方法,并选择性地Compare方法,来查找字符串中的子字符串。

如果你拆分的字符串中的分隔符,使用IndexOfIndexOfAny方法来查找字符串中的分隔符。 如果你拆分的字符串中的分隔符字符串,使用IndexOfIndexOfAny方法来查找分隔符字符串的第一个字符。 然后使用Compare方法来确定该第一个字符后面的字符是否为等于其余的字符的分隔符字符串。

此外,如果组相同的字符用于拆分中存在多个字符串Split方法调用,请考虑创建一个数组,并在每个方法调用中引用它。 从而大幅减少每个方法调用的其他系统开销。

调用函数说明:

在.NET Framework 3.5和早期版本中,如果Split方法传递separatornull或不包含任何字符,该方法使用略有不同的一组字符比字符串拆分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]>

*/

通用 Windows 平台
自 8 起可用
.NET Framework
自 2.0 起可用
可移植类库
可移植 .NET 平台 中受支持
Silverlight
自 2.0 起可用
Windows Phone Silverlight
自 7.0 起可用
Windows Phone
自 8.1 起可用
返回页首
显示: