信息
您所需的主题如下所示。但此主题未包含在此库中。

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

2013/12/13

返回的字符串数组包含此字符串中的子字符串(由指定 Unicode 字符数组的元素分隔)。参数指定是否返回空数组元素。

Namespace:  System
程序集:  mscorlib(位于 mscorlib.dll 中)

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

参数

separator
类型: System.Char []
分隔此字符串中子字符串的 Unicode 字符数组、不包含分隔符的空数组或 null
options
类型: System.StringSplitOptions
一个标志,指示是否在返回的数组中包括空元素。指定 StringSplitOptions.RemoveEmptyEntries 将从返回的数组中省略空元素。指定 StringSplitOptions.None 将在返回的数组中包括空元素。

返回值

类型: System.String []
一个数组,其元素包含此字符串中的子字符串,这些子字符串由 separator 中的一个或多个字符分隔。有关更多信息,请参见“备注”一节。

异常条件
ArgumentException

options 不是 StringSplitOptions 枚举的成员。

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

如果此实例不包含 separator 中的任何字符,则返回的数组由包含此实例的单个元素组成。如果 separator 参数为 null 或不包含任何字符,则采用空白字符作为分隔符。有关由 Split 方法解释为空白字符的字符列表,请参见 String.Split(Char[]) 方法"备注"部分中的表。(请注意,此列表与由 Trim() 方法识别的空白字符的列表稍有不同。)但是,如果调用中的 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 方法调用中使用相同的字符集拆分字符串,请考虑创建一个数组并在每个方法调用中都引用该数组。这可以极大地减少每个方法调用的额外系统开销。

下面的示例使用 StringSplitOptions 枚举来包含或排除由 Split 方法返回的子字符串。


using System;

class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      string s1 = ",ONE,,TWO,,,THREE,,";
      string s2 = "[stop]" +
                  "ONE[stop][stop]" +
                  "TWO[stop][stop][stop]" +
                  "THREE[stop][stop]";
      char[] charSeparators = { ',' };
      string[] stringSeparator = {"[stop]"};
      string[] result;
      // ------------------------------------------------------------------------------
      // Split a string delimited by characters.
      // ------------------------------------------------------------------------------
      outputBlock.Text += "1) Split a string delimited by characters:\n" + "\n";

      // Display the original string and delimiter characters.
      outputBlock.Text += String.Format("1a )The original string is \"{0}\".", s1) + "\n";
      outputBlock.Text += String.Format("The delimiter character is '{0}'.\n",
                         charSeparators[0]) + "\n";

      // Split a string delimited by characters and return all elements.
      outputBlock.Text += String.Format("1b) Split a string delimited by characters and " +
                        "return all elements:") + "\n";
      result = s1.Split(charSeparators, StringSplitOptions.None);
      Show(outputBlock, result);

      // Split a string delimited by characters and return all non-empty elements.
      outputBlock.Text += String.Format("1c) Split a string delimited by characters and " +
                        "return all non-empty elements:") + "\n";
      result = s1.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries);
      Show(outputBlock, result);

      // ------------------------------------------------------------------------------
      // Split a string delimited by another string.
      // ------------------------------------------------------------------------------
      outputBlock.Text += "2) Split a string delimited by another string:\n" + "\n";

      // Display the original string and delimiter string.
      outputBlock.Text += String.Format("2a) The original string is \"{0}\".", s2) + "\n";
      outputBlock.Text += String.Format("The delimiter string is \"{0}\".\n", stringSeparator[0]) + "\n";

      // Split a string delimited by another string and return all elements.
      outputBlock.Text += String.Format("2b) Split a string delimited by another string and " +
                        "return all elements:") + "\n";
      result = s2.Split(stringSeparator, StringSplitOptions.None);
      Show(outputBlock, result);

      // Split the original string at the delimiter and return all non-empty elements.
      outputBlock.Text += String.Format("2c) Split a string delimited by another string and " +
                        "return all non-empty elements:") + "\n";
      result = s2.Split(stringSeparator, StringSplitOptions.RemoveEmptyEntries);
      Show(outputBlock, result);
   }

   // Display the array of separated strings.
   public static void Show(System.Windows.Controls.TextBlock outputBlock, string[] entries)
   {
      outputBlock.Text += String.Format("The return value contains these {0} elements:", entries.Length) + "\n";
      foreach (string entry in entries)
      {
         outputBlock.Text += String.Format("<{0}>", entry);
      }
      outputBlock.Text += "\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>

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>

*/


Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

显示: