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

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

 

基于数组中的字符串将一个字符串拆分成最大数量的子字符串。 可以指定子字符串是否包含空数组元素。

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

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

参数

separator
Type: System.String[]

分隔此字符串中子字符串的字符串数组、不包含分隔符的空数组或 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(string[]), 3, StringSplitOptions.RemoveEmptyEntries);

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

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

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

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

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

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

如果任何中的元素separator包含的多个字符,将整个子字符串被视为分隔符。 例如,如果一个中的元素的separator为"10",以尝试拆分字符串"This10is10a10string。" 返回此四个元素的数组: {"This","is","a"、"字符串。 }.

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

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

Split方法将忽略的任何元素separator其值是null或为空字符串 ("")。

若要避免不明确的结果时中的字符串separator具有公共,字符Split方法将从头转到实例的值的末尾,并与匹配的第一个元素separator,它等于实例中的分隔符。 在其中子字符串的实例中出现的顺序将优先于中的元素的顺序separator

例如,考虑其值是"abcdef"的实例。 如果中的第一个元素separator为"简称 ef",第二个元素为"bcde",该拆分操作的结果将是"a"和"f"。 这是因为在实例中,"bcde"的子字符串遇到和匹配中的某个元素separator遇到的子字符串"f"之前。

但是,如果的第一个元素separator为"bcd",第二个元素为"bc",该拆分操作的结果将是"a"和"ef"。 这是因为"bcd"中的第一个分隔符separator与实例中的分隔符相匹配。 如果已撤消的分隔符的顺序,因此第一个元素为"bc",并且此第二个元素是"bcd",结果将是"a"和"def"。

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 起可用
返回页首
显示: