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

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

 

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

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

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

参数

separator
Type: System.String[]

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

options
Type: System.StringSplitOptions

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

返回值

Type: System.String[]

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

Exception Condition
ArgumentException

options 不是 StringSplitOptions 值之一。

当字符串分隔的一组已知的字符串时,你可以使用Split方法将其单独放入子字符串。

返回的数组的元素中不包括分隔符字符串。 例如,如果separator数组包含字符串"-"和当前的字符串实例的值是"aa-bb 抄送",该方法返回一个数组,包含三个元素:"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包含的多个字符,将整个子字符串被视为分隔符。 例如,如果一个中的元素的separator为"10",以尝试拆分字符串"This10is10a10string。" 返回以下四个元素的数组: {"This","is","a"、"字符串。 }.

如果separator参数是null或不包含任何字符,空白字符都被认为是分隔符。 由 Unicode 标准和返回定义空白字符true如果它们传递给Char.IsWhiteSpace方法。

如果separator对此方法重载的调用中的参数是null,编译器重载决策失败。 若要明确地标识所调用的方法,你的代码必须指示的一种null 下面的示例演示通过多种方式来明确地标识此重载。

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

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

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

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

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 空白字符。

下面的示例演示返回通过调用的字符串数组中的差异String.Split(String[], StringSplitOptions)方法替换其options参数等于StringSplitOptions.NoneStringSplitOptions.RemoveEmptyEntries

using System;

class Example 
{
   public static void Main() 
   {
      string source = "[stop]ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]";
      string[] stringSeparators = new string[] {"[stop]"};
      string[] result;

      // Display the original string and delimiter string.
      Console.WriteLine("Splitting the string:\n   \"{0}\".", source);
      Console.WriteLine();
      Console.WriteLine("Using the delimiter string:\n   \"{0}\"", 
                        stringSeparators[0]);
      Console.WriteLine();                           

      // Split a string delimited by another string and return all elements.
      result = source.Split(stringSeparators, StringSplitOptions.None);
      Console.WriteLine("Result including all elements ({0} elements):", 
                        result.Length);
      Console.Write("   ");
      foreach (string s in result)
      {
         Console.Write("'{0}' ", String.IsNullOrEmpty(s) ? "<>" : s);                   
      }
      Console.WriteLine();
      Console.WriteLine();

      // Split delimited by another string and return all non-empty elements.
      result = source.Split(stringSeparators, 
                            StringSplitOptions.RemoveEmptyEntries);
      Console.WriteLine("Result including non-empty elements ({0} elements):", 
                        result.Length);
      Console.Write("   ");
      foreach (string s in result)
      {
         Console.Write("'{0}' ", String.IsNullOrEmpty(s) ? "<>" : s);                   
      }
      Console.WriteLine();
   }
}
// The example displays the following output:
//    Splitting the string:
//       "[stop]ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]".
//    
//    Using the delimiter string:
//       "[stop]"
//    
//    Result including all elements (9 elements):
//       '<>' 'ONE' '<>' 'TWO' '<>' '<>' 'THREE' '<>' '<>'
//    
//    Result including non-empty elements (3 elements):
//       'ONE' 'TWO' 'THREE'

下面的示例定义包括标点和空白字符的分隔符的数组。 传递的值以及此数组StringSplitOptions.RemoveEmptyEntriesSplit(String[], StringSplitOptions)方法返回一个数组,其中包含从字符串的各单词。

using System;

public class Example
{
   public static void Main()
   {
      string[] separators = {",", ".", "!", "?", ";", ":", " "};
      string value = "The handsome, energetic, young dog was playing with his smaller, more lethargic litter mate.";
      string[] words = value.Split(separators, StringSplitOptions.RemoveEmptyEntries);
      foreach (var word in words)
         Console.WriteLine(word);
   }
}
// The example displays the following output:
//       The
//       handsome
//       energetic
//       young
//       dog
//       was
//       playing
//       with
//       his
//       smaller
//       more
//       lethargic
//       litter
//       mate

Note that the method is called with the options argument set to F:System.StringSplitOptions.RemoveEmptyEntries. This prevents the returned array from includingF:System.String.Empty values that represent empty substring matches between punctuation marks and white-space characters.

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