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

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

 

基于数组中的字符将一个字符串拆分成最大数量的子字符串。

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

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

参数

separator
Type: System.Char[]

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

count
Type: System.Int32

要返回的子字符串的最大数量。

options
Type: System.StringSplitOptions

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

返回值

Type: System.String[]

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

Exception Condition
ArgumentOutOfRangeException

count 为负数。

ArgumentException

options 不是 StringSplitOptions 值之一。

返回的数组的元素中不包含分隔符字符。

如果此实例不包含任何中的字符separator,或count参数为 1,返回的数组包含一个包含此实例的单个元素。 如果separator参数是null或不包含任何字符,空白字符都被认为是分隔符。 由 Unicode 标准和返回定义空白字符true如果它们传递给Char.IsWhiteSpace方法。 但是,如果separator对此方法重载的调用中的参数是null,编译器重载决策失败。 若要明确地标识所调用的方法,你的代码必须指示 null 的类型。 下面的示例演示通过多种方式来明确地标识此重载。

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

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

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

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

如果count参数为零,或options参数是RemoveEmptyEntries和此实例的长度为零,则返回一个空数组。

每个元素separator定义单独的分隔符字符。 如果options参数是None,和两个分隔符是相邻或分隔符找到的开头或末尾此情况下,相应的数组元素都包含Empty

如果有多个count个子字符串在此情况下,第一个count减去 1 的子字符串将返回在第一个count减 1 个元素的返回值,且其余的字符在此实例中返回的返回值的最后一个元素中。

如果count大于数量的子字符串,则返回可用的子字符串和不引发异常。

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 平台 中受支持
Windows Phone Silverlight
自 8.0 起可用
Windows Phone
自 8.1 起可用
返回页首
显示: