String.Split Метод

Определение

Возвращает строковый массив, содержащий подстроки данного экземпляра, разделенные элементами заданной строки или массива знаков Юникода.Returns a string array that contains the substrings in this instance that are delimited by elements of a specified string or Unicode character array.

Перегрузки

Split(Char[], Int32, StringSplitOptions)

Разбивает строку на максимальное число подстрок в зависимости от символов в массиве.Splits a string into a maximum number of substrings based on the characters in an array.

Split(Char, Int32, StringSplitOptions)

Разделяет строку на максимальное количество подстрок в соответствии с указанным символом-разделителем.Splits a string into a maximum number substrings based on the provided character separator.

Split(String[], Int32, StringSplitOptions)

Разбивает строку на максимальное число подстрок в зависимости от строк в массиве.Splits a string into a maximum number of substrings based on the strings in an array. Можно указать, включают ли подстроки пустые элементы массива.You can specify whether the substrings include empty array elements.

Split(String[], StringSplitOptions)

Разбивает строку на подстроки в зависимости от строк в массиве.Splits a string into substrings based on the strings in an array. Можно указать, включают ли подстроки пустые элементы массива.You can specify whether the substrings include empty array elements.

Split(String, Int32, StringSplitOptions)

Разделяет строку на максимальное количество подстрок в соответствии с указанной строкой-разделителем.Splits a string into a maximum number of substrings based on the provided string separator.

Split(Char[], StringSplitOptions)

Разбивает строку на подстроки в зависимости от символов в массиве.Splits a string into substrings based on the characters in an array. Можно указать, включают ли подстроки пустые элементы массива.You can specify whether the substrings include empty array elements.

Split(Char[], Int32)

Разбивает строку на максимальное число подстрок в зависимости от символов в массиве.Splits a string into a maximum number of substrings based on the characters in an array. Можно также указать максимальное число возвращаемых подстрок.You also specify the maximum number of substrings to return.

Split(Char, StringSplitOptions)

Разделяет строку на подстроки в соответствии с указанным символом-разделителем.Splits a string into substrings based on the provided character separator.

Split(String, StringSplitOptions)

Разделяет строку на подстроки в соответствии с указанной строкой-разделителем.Splits a string into substrings that are based on the provided string separator.

Split(Char[])

Разделяет строку на подстроки в зависимости от символов в массиве разделителей.Splits a string into substrings that are based on the characters in the separator array.

Комментарии

Split используется для разбиения строки с разделителями на подстроки.Split is used to break a delimited string into substrings. Можно использовать либо массив символов, чтобы указать ноль, один или несколько символов разделителей (метод Split(Char[])), либо можно использовать массив символов для указания нулевой, одной или нескольких строк разделителей.You can use either a character array to specify zero, one, or multiple delimiting characters (the Split(Char[]) method), or you can use a character array to specify zero, one, or multiple delimiting strings. Перегрузки метода Split позволяют ограничить количество подстрок, возвращаемых методом (метод Split(Char[], Int32)), для определения того, включены ли пустые строки в возвращаемые подстроки (методы Split(Char[], StringSplitOptions) и Split(String[], StringSplitOptions) или для обоих методов (Split(Char[], Int32, StringSplitOptions) и Split(String[], Int32, StringSplitOptions) методов).Overloads of the Split method allow you to limit the number of substrings returned by the method (the Split(Char[], Int32) method), to determine whether empty strings are included in the returned substrings (the Split(Char[], StringSplitOptions) and Split(String[], StringSplitOptions) methods, or to do both (the Split(Char[], Int32, StringSplitOptions) and Split(String[], Int32, StringSplitOptions) methods).

Примечание

Примеры C# в этой статье выполняются во встроенном средстве выполнения кода и на площадке Try.NET.The C# examples in this article run in the Try.NET inline code runner and playground. Нажмите на кнопку Выполнить, чтобы выполнить пример в интерактивном окне.Select the Run button to run an example in an interactive window. После выполнения кода вы можете изменить его и выполнить измененный код, снова нажав на кнопку Выполнить.Once you execute the code, you can modify it and run the modified code by selecting Run again. Либо в интерактивном окне выполняется измененный код, либо, если компиляция завершается с ошибкой, в интерактивном окне отображаются все сообщения об ошибках компилятора C#.The modified code either runs in the interactive window or, if compilation fails, the interactive window displays all C# compiler error messages.

Альтернативы String. SplitAlternatives to String.Split

Метод Split не всегда является лучшим способом разбивать строку с разделителями на подстроки.The Split method is not always the best way to break a delimited string into substrings. Если вы не хотите извлекать все подстроки из строки с разделителями или хотите проанализировать строку на основе шаблона вместо набора символов-разделителей, рассмотрим следующие варианты.If you don't want to extract all of the substrings of a delimited string, or if you want to parse a string based on a pattern instead of a set of delimiter characters, consider the following alternatives.

Регулярные выраженияRegular expressions

Если строки соответствуют фиксированному шаблону, можно использовать регулярное выражение для извлечения и обработки их элементов.If your strings conform to a fixed pattern, you can use a regular expression to extract and handle their elements. Например, если строки имеютформу "номер операнда ** числа", можно использовать регулярное выражение для извлечения и обработки элементов строки.For example, if strings take the form "number operand number" you can use a regular expression to extract and handle the string's elements. Ниже приведен пример:Here's an example:

   String[] expressions = { "16 + 21", "31 * 3", "28 / 3",
                            "42 - 18", "12 * 7",
                            "2, 4, 6, 8" };
   String pattern = @"(\d+)\s+([-+*/])\s+(\d+)";
   foreach (var expression in expressions)
      foreach (System.Text.RegularExpressions.Match m in 
      System.Text.RegularExpressions.Regex.Matches(expression, pattern)) {
         int value1 = Int32.Parse(m.Groups[1].Value);
         int value2 = Int32.Parse(m.Groups[3].Value);
         switch (m.Groups[2].Value)
         {
            case "+":
               Console.WriteLine("{0} = {1}", m.Value, value1 + value2);
               break;
            case "-":
               Console.WriteLine("{0} = {1}", m.Value, value1 - value2);
               break;
            case "*":
               Console.WriteLine("{0} = {1}", m.Value, value1 * value2);
               break;
            case "/":
               Console.WriteLine("{0} = {1:N2}", m.Value, value1 / value2);
               break;
         }
      }
// The example displays the following output:
//       16 + 21 = 37
//       31 * 3 = 93
//       28 / 3 = 9.33
//       42 - 18 = 24
//       12 * 7 = 84
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim expressions() As String = { "16 + 21", "31 * 3", "28 / 3",
                                      "42 - 18", "12 * 7",
                                      "2, 4, 6, 8" }

      Dim pattern As String = "(\d+)\s+([-+*/])\s+(\d+)"
      For Each expression In expressions
         For Each m As Match in Regex.Matches(expression, pattern)
            Dim value1 As Integer = Int32.Parse(m.Groups(1).Value)
            Dim value2 As Integer = Int32.Parse(m.Groups(3).Value)
            Select Case m.Groups(2).Value
               Case "+"
                  Console.WriteLine("{0} = {1}", m.Value, value1 + value2)
               Case "-"
                  Console.WriteLine("{0} = {1}", m.Value, value1 - value2)
               Case "*"
                  Console.WriteLine("{0} = {1}", m.Value, value1 * value2)
               Case "/"
                  Console.WriteLine("{0} = {1:N2}", m.Value, value1 / value2)
            End Select
         Next
      Next
   End Sub
End Module
' The example displays the following output:
'       16 + 21 = 37
'       31 * 3 = 93
'       28 / 3 = 9.33
'       42 - 18 = 24
'       12 * 7 = 84

Шаблон регулярного выражения (\d+)\s+([-+*/])\s+(\d+) определяется следующим образом:The regular expression pattern (\d+)\s+([-+*/])\s+(\d+) is defined like this:

ШаблонPattern ОписаниеDescription
(\d+) Совпадение с одной или несколькими десятичными цифрами.Match one or more decimal digits. Это первая группа записи.This is the first capturing group.
\s+ Совпадение с одним или несколькими символами пробела.Match one or more white-space characters.
([-+*/]) Совпадение со знаком арифметического оператора (+,-, * или/).Match an arithmetic operator sign (+, -, *, or /). Это вторая группа записи.This is the second capturing group.
\s+ Совпадение с одним или несколькими символами пробела.Match one or more white-space characters.
(\d+) Совпадение с одной или несколькими десятичными цифрами.Match one or more decimal digits. Это третья группа записи.This is the third capturing group.

Можно также использовать регулярное выражение для извлечения подстрок из строки на основе шаблона, а не фиксированного набора символов.You can also use a regular expression to extract substrings from a string based on a pattern rather than a fixed set of characters. Это распространенный сценарий, когда происходит одно из следующих условий:This is a common scenario when either of these conditions occurs:

  • Один или несколько символов-разделителей не всегда являются разделителями в экземпляре String.One or more of the delimiter characters does not always serve as a delimiter in the String instance.

  • Последовательность и количество символов-разделителей являются переменными или неизвестными.The sequence and number of delimiter characters is variable or unknown.

Например, метод Split не может быть использован для разбиения следующей строки, поскольку число \n (в C#) или vbCrLf (в Visual Basic) является переменной и не всегда используется в качестве разделителей.For example, the Split method cannot be used to split the following string, because the number of \n (in C#) or vbCrLf (in Visual Basic) characters is variable, and they don't always serve as delimiters.

[This is captured\ntext.]\n\n[\n[This is more captured text.]\n]  
\n[Some more captured text:\n   Option1\n   Option2][Terse text.]  

Регулярное выражение может легко разделить эту строку, как показано в следующем примере.A regular expression can split this string easily, as the following example shows.

String input = "[This is captured\ntext.]\n\n[\n" +
               "[This is more captured text.]\n]\n" +
               "[Some more captured text:\n   Option1" +
               "\n   Option2][Terse text.]";
String pattern = @"\[([^\[\]]+)\]";
int ctr = 0;
foreach (System.Text.RegularExpressions.Match m in 
   System.Text.RegularExpressions.Regex.Matches(input, pattern))
   Console.WriteLine("{0}: {1}", ++ctr, m.Groups[1].Value);
// The example displays the following output:
//       1: This is captured
//       text.
//       2: This is more captured text.
//       3: Some more captured text:
//          Option1
//          Option2
//       4: Terse text.
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim input As String = String.Format("[This is captured{0}text.]" +
                                          "{0}{0}[{0}[This is more " +
                                          "captured text.]{0}{0}" +
                                          "[Some more captured text:" +
                                          "{0}   Option1" +
                                          "{0}   Option2][Terse text.]",
                                          vbCrLf)
      Dim pattern As String = "\[([^\[\]]+)\]"
      Dim ctr As Integer = 0
      For Each m As Match In Regex.Matches(input, pattern)
         ctr += 1
         Console.WriteLine("{0}: {1}", ctr, m.Groups(1).Value)
      Next
   End Sub
End Module
' The example displays the following output:
'       1: This is captured
'       text.
'       2: This is more captured text.
'       3: Some more captured text:
'          Option1
'          Option2
'       4: Terse text.

Шаблон регулярного выражения \[([^\[\]]+)\] определяется следующим образом:The regular expression pattern \[([^\[\]]+)\] is defined like this:

ШаблонPattern ОписаниеDescription
\[ Совпадение с открывающей скобкой.Match an opening bracket.
([^\[\]]+) Совпадение с любым символом, который не является открывающей или закрывающей круглой скобкой один или несколько раз.Match any character that is not an opening or a closing bracket one or more times. Это первая группа записи.This is the first capturing group.
\] Совпадение с закрывающей скобкой.Match a closing bracket.

Метод Regex.Split почти идентичен String.Split, за исключением того, что он разделяет строку на основе шаблона регулярного выражения вместо фиксированной кодировки.The Regex.Split method is almost identical to String.Split, except that it splits a string based on a regular expression pattern instead of a fixed character set. Например, в следующем примере используется метод Regex.Split для разбиения строки, содержащей подстроки, с помощью различных сочетаний дефисов и других символов.For example, the following example uses the Regex.Split method to split a string that contains substrings delimited by various combinations of hyphens and other characters.

String input = "abacus -- alabaster - * - atrium -+- " +
               "any -*- actual - + - armoire - - alarm";
String pattern = @"\s-\s?[+*]?\s?-\s";
String[] elements = System.Text.RegularExpressions.Regex.Split(input, pattern);
foreach (var element in elements)
   Console.WriteLine(element);

// The example displays the following output:
//       abacus
//       alabaster
//       atrium
//       any
//       actual
//       armoire
//       alarm
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim input As String = "abacus -- alabaster - * - atrium -+- " +
                            "any -*- actual - + - armoir - - alarm"
      Dim pattern As String = "\s-\s?[+*]?\s?-\s"
      Dim elements() As String = Regex.Split(input, pattern)
      For Each element In elements
         Console.WriteLine(element)
      Next
   End Sub
End Module
' The example displays the following output:
'       abacus
'       alabaster
'       atrium
'       any
'       actual
'       armoir
'       alarm

Шаблон регулярного выражения \s-\s?[+*]?\s?-\s определяется следующим образом:The regular expression pattern \s-\s?[+*]?\s?-\s is defined like this:

ШаблонPattern ОписаниеDescription
\s- Совпадение с символом пробела, за которым следует дефис.Match a white-space character followed by a hyphen.
\s? Совпадение с нулем или одним символом пробела.Match zero or one white-space character.
[+*]? Совпадение с нулем или одним вхождением символа + или *.Match zero or one occurrence of either the + or * character.
\s? Совпадение с нулем или одним символом пробела.Match zero or one white-space character.
-\s Совпадение с дефисом, за которым следует пробельный символ.Match a hyphen followed by a white-space character.

Методы поиска и метод substringSearch methods and the Substring method

Если вы не заинтересованы во всех подстроках в строке, то можете использовать один из методов сравнения строк, возвращающих индекс, с которого начинается сопоставление.If you aren't interested in all of the substrings in a string, you might prefer to work with one of the string comparison methods that returns the index at which the match begins. Затем можно вызвать метод Substring, чтобы извлечь нужную подстроку.You can then call the Substring method to extract the substring that you want. Ниже перечислены методы сравнения строк.The string comparison methods include:

  • IndexOf, возвращающий Отсчитываемый от нуля индекс первого вхождения символа или строки в экземпляре строки.IndexOf, which returns the zero-based index of the first occurrence of a character or string in a string instance.

  • IndexOfAny, возвращающий Отсчитываемый от нуля индекс в текущем экземпляре строки первого вхождения любого символа в массиве символов.IndexOfAny, which returns the zero-based index in the current string instance of the first occurrence of any character in a character array.

  • LastIndexOf, возвращающий Отсчитываемый от нуля индекс последнего вхождения символа или строки в экземпляре строки.LastIndexOf, which returns the zero-based index of the last occurrence of a character or string in a string instance.

  • LastIndexOfAny, возвращающий Отсчитываемый от нуля индекс в текущем экземпляре строки последнего вхождения любого символа в массиве символов.LastIndexOfAny, which returns a zero-based index in the current string instance of the last occurrence of any character in a character array.

В следующем примере метод IndexOf используется для поиска точек в строке.The following example uses the IndexOf method to find the periods in a string. Затем он использует метод Substring для возврата полных предложений.It then uses the Substring method to return full sentences.

String value = "This is the first sentence in a string. " +
               "More sentences will follow. For example, " +
               "this is the third sentence. This is the " +
               "fourth. And this is the fifth and final " +
               "sentence.";
var sentences = new List<String>();
int position = 0;
int start = 0;
// Extract sentences from the string.
do 
{
   position = value.IndexOf('.', start);
   if (position >= 0) 
   {
      sentences.Add(value.Substring(start, position - start + 1).Trim());
      start = position + 1;
   }
} while (position > 0);

// Display the sentences.
foreach (var sentence in sentences)
   Console.WriteLine(sentence);

// The example displays the following output:
//       This is the first sentence in a string.
//       More sentences will follow.
//       For example, this is the third sentence.
//       This is the fourth.
//       And this is the fifth and final sentence.
Imports System.Collections.Generic

Module Example
   Public Sub Main()
      Dim value As String = "This is the first sentence in a string. " +
                            "More sentences will follow. For example, " +
                            "this is the third sentence. This is the " +
                            "fourth. And this is the fifth and final " +
                            "sentence."
      Dim sentences As New List(Of String)
      Dim position As Integer = 0
      Dim start As Integer = 0
      ' Extract sentences from the string.
      Do
         position = value.IndexOf("."c, start)
         If position >= 0 Then
            sentences.Add(value.Substring(start, position - start + 1).Trim())
            start = position + 1
         End If
      Loop While position > 0
      
      ' Display the sentences.
      For Each sentence In sentences
         Console.WriteLine(sentence)
      Next
   End Sub
End Module
' The example displays the following output:
'       This is the first sentence in a string.
'       More sentences will follow.
'       For example, this is the third sentence.
'       This is the fourth.
'       And this is the fifth and final sentence.

Split(Char[], Int32, StringSplitOptions)

Разбивает строку на максимальное число подстрок в зависимости от символов в массиве.Splits a string into a maximum number of substrings based on the characters in an array.

public:
 cli::array <System::String ^> ^ Split(cli::array <char> ^ separator, int count, StringSplitOptions options);
[System.Runtime.InteropServices.ComVisible(false)]
public string[] Split (char[] separator, int count, StringSplitOptions options);
member this.Split : char[] * int * StringSplitOptions -> string[]
Public Function Split (separator As Char(), count As Integer, options As StringSplitOptions) As String()

Параметры

separator
Char[]

Массив символов, разделяющий подстроки в данной строке, пустой массив, не содержащий разделителей, или null.A character array that delimits the substrings in this string, an empty array that contains no delimiters, or null.

count
Int32

Максимальное число возвращаемых подстрок.The maximum number of substrings to return.

options
StringSplitOptions

RemoveEmptyEntries, чтобы исключить пустые элементы из возвращаемого массива; или None для включения пустых элементов в возвращаемый массив.RemoveEmptyEntries to omit empty array elements from the array returned; or None to include empty array elements in the array returned.

Возвраты

String[]

Массив, элементы которого содержат подстроки данной строки, разделенные одним или более знаками из separator.An array whose elements contain the substrings in this string that are delimited by one or more characters in separator. Дополнительные сведения см. в разделе "Примечания".For more information, see the Remarks section.

Атрибуты

Исключения

count является отрицательным значением.count is negative.

options не является одним из значений StringSplitOptions.options is not one of the StringSplitOptions values.

Примеры

В следующем примере используется перечисление StringSplitOptions для включения или исключения подстрок, созданных методом Split.The following example uses the StringSplitOptions enumeration to include or exclude substrings generated by the Split method.

// This example demonstrates the String.Split(Char[], Boolean) and 
//                               String.Split(Char[], Int32, Boolean) methods
using namespace System;
void Show( array<String^>^entries )
{
   Console::WriteLine( "The return value contains these {0} elements:", entries->Length );
   System::Collections::IEnumerator^ myEnum = entries->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      String^ entry = safe_cast<String^>(myEnum->Current);
      Console::Write( "<{0}>", entry );
   }

   Console::Write( "{0}{0}", Environment::NewLine );
}

int main()
{
   String^ s = ",one,,,two,,,,,three,,";
   array<Char>^sep = gcnew array<Char>{
      ','
   };
   array<String^>^result;
   
   //
   Console::WriteLine( "The original string is \"{0}\".", s );
   Console::WriteLine( "The separation character is '{0}'.", sep[ 0 ] );
   Console::WriteLine();
   
   //
   Console::WriteLine( "Split the string and return all elements:" );
   result = s->Split( sep, StringSplitOptions::None );
   Show( result );
   
   //
   Console::WriteLine( "Split the string and return all non-empty elements:" );
   result = s->Split( sep, StringSplitOptions::RemoveEmptyEntries );
   Show( result );
   
   //
   Console::WriteLine( "Split the string and return 2 elements:" );
   result = s->Split( sep, 2, StringSplitOptions::None );
   Show( result );
   
   //
   Console::WriteLine( "Split the string and return 2 non-empty elements:" );
   result = s->Split( sep, 2, StringSplitOptions::RemoveEmptyEntries );
   Show( result );
}

/*
This example produces the following results:

The original string is ",one,,,two,,,,,three,,".
The separation character is ','.

Split the string and return all elements:
The return value contains these 12 elements:
<><one><><><two><><><><><three><><>

Split the string and return all non-empty elements:
The return value contains these 3 elements:
<one><two><three>

Split the string and return 2 elements:
The return value contains these 2 elements:
<><one,,,two,,,,,three,,>

Split the string and return 2 non-empty elements:
The return value contains these 2 elements:
<one><,,two,,,,,three,,>

*/
// This example demonstrates the String() methods that use
// the StringSplitOptions enumeration.
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 using a local function
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]>

*/

' This example demonstrates the String() methods that use
' the StringSplitOptions enumeration.
Class Sample
    Public Shared Sub Main() 
        Dim s1 As String = ",ONE,,TWO,,,THREE,,"
        Dim s2 As String = "[stop]" & _
                           "ONE[stop][stop]" & _
                           "TWO[stop][stop][stop]" & _
                           "THREE[stop][stop]"
        Dim charSeparators() As Char = {","c}
        Dim stringSeparators() As String = {"[stop]"}
        Dim result() As String
        ' ------------------------------------------------------------------------------
        ' Split a string delimited by characters.
        ' ------------------------------------------------------------------------------
        Console.WriteLine("1) Split a string delimited by characters:" & vbCrLf)
        
        ' Display the original string and delimiter characters.
        Console.WriteLine("1a )The original string is ""{0}"".", s1)
        Console.WriteLine("The delimiter character is '{0}'." & vbCrLf, 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:" & vbCrLf)
        
        ' Display the original string and delimiter string.
        Console.WriteLine("2a) The original string is ""{0}"".", s2)
        Console.WriteLine("The delimiter string is ""{0}""." & vbCrLf, 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)
    
    End Sub
    
    
    ' Display the array of separated strings.
    Public Shared Sub Show(ByVal entries() As String) 
        Console.WriteLine("The return value contains these {0} elements:", entries.Length)
        Dim entry As String
        For Each entry In  entries
            Console.Write("<{0}>", entry)
        Next entry
        Console.Write(vbCrLf & vbCrLf)
    
    End Sub
End Class
'
'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]>
'

Комментарии

Символы разделителей не включаются в элементы возвращаемого массива.Delimiter characters are not included in the elements of the returned array.

Если этот экземпляр не содержит символов в separator или параметр count равен 1, то возвращаемый массив состоит из одного элемента, содержащего этот экземпляр.If this instance does not contain any of the characters in separator, or the count parameter is 1, the returned array consists of a single element that contains this instance. Если параметр separator имеет значение null или не содержит символов, то символы пробела считаются разделителями.If the separator parameter is null or contains no characters, white-space characters are assumed to be the delimiters. Символы пробела определяются стандартом Юникода и возвращают true, если они передаются в метод Char.IsWhiteSpace.White-space characters are defined by the Unicode standard and return true if they are passed to the Char.IsWhiteSpace method. Однако если параметр separator в вызове этой перегруженной версии метода равен null, разрешение перегрузки компилятора завершается ошибкой.However, if the separator parameter in the call to this method overload is null, compiler overload resolution fails. Чтобы однозначно определить вызываемый метод, код должен указывать тип значения NULL.To unambiguously identify the called method, your code must indicate the type of the null. В следующем примере показано несколько способов однозначного определения этой перегрузки.The following example shows several ways to unambiguously identify this overload.

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);
Dim phrase As String = "The quick brown fox"
Dim words() As String

words = phrase.Split(TryCast(Nothing, Char()), 3, 
                       StringSplitOptions.RemoveEmptyEntries)

words = phrase.Split(New Char() {}, 3,
                     StringSplitOptions.RemoveEmptyEntries)

Если параметр count равен нулю или параметр options имеет значение RemoveEmptyEntries, а длина этого экземпляра равна нулю, возвращается пустой массив.If the count parameter is zero, or the options parameter is RemoveEmptyEntries and the length of this instance is zero, an empty array is returned.

Каждый элемент separator определяет отдельный разделитель.Each element of separator defines a separate delimiter character. Если параметр options имеет значение None, а два разделителя являются смежными или разделитель находится в начале или в конце этого экземпляра, соответствующий элемент массива содержит Empty.If the options parameter is None, and two delimiters are adjacent or a delimiter is found at the beginning or end of this instance, the corresponding array element contains Empty.

Если в этом экземпляре содержится более count подстрок, первая подстрока count минус 1 возвращается в первый count минус 1 элемент возвращаемого значения, а остальные символы в этом экземпляре возвращаются в последнем элементе возвращаемого значения. .If there are more than count substrings in this instance, the first count minus 1 substrings are returned in the first count minus 1 elements of the return value, and the remaining characters in this instance are returned in the last element of the return value.

Если count больше числа подстрок, возвращаются доступные подстроки и исключение не создается.If count is greater than the number of substrings, the available substrings are returned and no exception is thrown.

Особенности производительностиPerformance Considerations

Методы Split выделяют память для возвращаемого объекта массива и объект String для каждого элемента массива.The Split methods allocate memory for the returned array object and a String object for each array element. Если приложению требуется оптимальная производительность или управление выделением памяти является критически важным в приложении, рассмотрите возможность использования метода IndexOf или IndexOfAny и, при необходимости, метода Compare для нахождение подстроки в строке.If your application requires optimal performance or if managing memory allocation is critical in your application, consider using the IndexOf or IndexOfAny method, and optionally the Compare method, to locate a substring within a string.

Если строка разделяется с помощью символа разделителя, используйте метод IndexOf или IndexOfAny для нахождение символа разделителя в строке.If you are splitting a string at a separator character, use the IndexOf or IndexOfAny method to locate a separator character in the string. При разделении строки в разделительной строке используйте метод IndexOf или IndexOfAny для нахождение первого символа строки разделителя.If you are splitting a string at a separator string, use the IndexOf or IndexOfAny method to locate the first character of the separator string. Затем используйте метод Compare, чтобы определить, равны ли символы, указанные после первого символа, оставшимся символам строки разделителя.Then use the Compare method to determine whether the characters after that first character are equal to the remaining characters of the separator string.

Кроме того, если для разделения строк в нескольких вызовах методов Split используется один и тот же набор символов, рассмотрите возможность создания одного массива и ссылки на него в каждом вызове метода.In addition, if the same set of characters is used to split strings in multiple Split method calls, consider creating a single array and referencing it in each method call. Это значительно сокращает дополнительную нагрузку на каждый вызов метода.This significantly reduces the additional overhead of each method call.

Примечания для тех, кто вызывает этот метод

В .NET Framework 3,5.NET Framework 3.5 и более ранних версиях, если метод Split(Char[]) передается separator, который имеет значение null или не содержит символов, метод использует слегка отличающийся набор символов, чтобы разделить строку, чем метод Trim(Char[]), чтобы обрезать строку.In the .NET Framework 3,5.NET Framework 3.5 and earlier versions, if the Split(Char[]) method is passed a separator that is null or contains no characters, the method uses a slightly different set of characters to split the string than the Trim(Char[]) method does to trim the string. Начиная с .NET Framework 4, оба метода используют идентичный набор пробельных символов Юникода.Starting with the .NET Framework 4, both methods use an identical set of Unicode white-space characters.

Split(Char, Int32, StringSplitOptions)

Разделяет строку на максимальное количество подстрок в соответствии с указанным символом-разделителем.Splits a string into a maximum number substrings based on the provided character separator.

public string[] Split (char separator, int count, StringSplitOptions options = System.StringSplitOptions.None);
member this.Split : char * int * StringSplitOptions -> string[]
Public Function Split (separator As Char, count As Integer, Optional options As StringSplitOptions = System.StringSplitOptions.None) As String()

Параметры

separator
Char

Символ, разделяющий подстроки в этом экземпляре.A character that delimits the substrings in this instance.

count
Int32

Максимальное количество элементов в массиве.The maximum number of elements expected in the array.

options
StringSplitOptions

Одно из значений перечисления, определяющее, должны ли пустые подстроки исключаться из возвращаемого значения при разделении.One of the enumeration values that determines whether the split operation should omit empty substrings from the return value.

Возвраты

String[]

Массив, элементы которого содержат максимум count подстрок из этого экземпляра, разделенных символом separator.An array whose elements contain at most count substrings from this instance that are delimited by separator.

Комментарии

Если строка уже была разбита count-1 раз, но конец строки не был достигнут, последняя строка в возвращенном массиве будет содержать оставшуюся конечную подстроку этого экземпляра без вмешательства пользователя.If the string has already been split count - 1 times, but the end of the string has not been reached, then the last string in the returned array will contain this instance's remaining trailing substring, untouched.

Split(String[], Int32, StringSplitOptions)

Разбивает строку на максимальное число подстрок в зависимости от строк в массиве.Splits a string into a maximum number of substrings based on the strings in an array. Можно указать, включают ли подстроки пустые элементы массива.You can specify whether the substrings include empty array elements.

public:
 cli::array <System::String ^> ^ Split(cli::array <System::String ^> ^ separator, int count, StringSplitOptions options);
[System.Runtime.InteropServices.ComVisible(false)]
public string[] Split (string[] separator, int count, StringSplitOptions options);
member this.Split : string[] * int * StringSplitOptions -> string[]
Public Function Split (separator As String(), count As Integer, options As StringSplitOptions) As String()

Параметры

separator
String[]

Массив строк, разделяющих подстроки в данной строке, пустой массив, не содержащий разделителей, или null.A string array that delimits the substrings in this string, an empty array that contains no delimiters, or null.

count
Int32

Максимальное число возвращаемых подстрок.The maximum number of substrings to return.

options
StringSplitOptions

RemoveEmptyEntries, чтобы исключить пустые элементы из возвращаемого массива; или None для включения пустых элементов в возвращаемый массив.RemoveEmptyEntries to omit empty array elements from the array returned; or None to include empty array elements in the array returned.

Возвраты

String[]

Массив, элементы которого содержат подстроки данной строки, разделенные одной или более строками из separator.An array whose elements contain the substrings in this string that are delimited by one or more strings in separator. Дополнительные сведения см. в разделе "Примечания".For more information, see the Remarks section.

Атрибуты

Исключения

count является отрицательным значением.count is negative.

options не является одним из значений StringSplitOptions.options is not one of the StringSplitOptions values.

Примеры

В следующем примере используется перечисление StringSplitOptions для включения или исключения подстрок, созданных методом Split.The following example uses the StringSplitOptions enumeration to include or exclude substrings generated by the Split method.

// This example demonstrates the String.Split(Char[], Boolean) and 
//                               String.Split(Char[], Int32, Boolean) methods
using namespace System;
void Show( array<String^>^entries )
{
   Console::WriteLine( "The return value contains these {0} elements:", entries->Length );
   System::Collections::IEnumerator^ myEnum = entries->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      String^ entry = safe_cast<String^>(myEnum->Current);
      Console::Write( "<{0}>", entry );
   }

   Console::Write( "{0}{0}", Environment::NewLine );
}

int main()
{
   String^ s = ",one,,,two,,,,,three,,";
   array<Char>^sep = gcnew array<Char>{
      ','
   };
   array<String^>^result;
   
   //
   Console::WriteLine( "The original string is \"{0}\".", s );
   Console::WriteLine( "The separation character is '{0}'.", sep[ 0 ] );
   Console::WriteLine();
   
   //
   Console::WriteLine( "Split the string and return all elements:" );
   result = s->Split( sep, StringSplitOptions::None );
   Show( result );
   
   //
   Console::WriteLine( "Split the string and return all non-empty elements:" );
   result = s->Split( sep, StringSplitOptions::RemoveEmptyEntries );
   Show( result );
   
   //
   Console::WriteLine( "Split the string and return 2 elements:" );
   result = s->Split( sep, 2, StringSplitOptions::None );
   Show( result );
   
   //
   Console::WriteLine( "Split the string and return 2 non-empty elements:" );
   result = s->Split( sep, 2, StringSplitOptions::RemoveEmptyEntries );
   Show( result );
}

/*
This example produces the following results:

The original string is ",one,,,two,,,,,three,,".
The separation character is ','.

Split the string and return all elements:
The return value contains these 12 elements:
<><one><><><two><><><><><three><><>

Split the string and return all non-empty elements:
The return value contains these 3 elements:
<one><two><three>

Split the string and return 2 elements:
The return value contains these 2 elements:
<><one,,,two,,,,,three,,>

Split the string and return 2 non-empty elements:
The return value contains these 2 elements:
<one><,,two,,,,,three,,>

*/
// This example demonstrates the String() methods that use
// the StringSplitOptions enumeration.
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 using a local function
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]>

*/

' This example demonstrates the String() methods that use
' the StringSplitOptions enumeration.
Class Sample
    Public Shared Sub Main() 
        Dim s1 As String = ",ONE,,TWO,,,THREE,,"
        Dim s2 As String = "[stop]" & _
                           "ONE[stop][stop]" & _
                           "TWO[stop][stop][stop]" & _
                           "THREE[stop][stop]"
        Dim charSeparators() As Char = {","c}
        Dim stringSeparators() As String = {"[stop]"}
        Dim result() As String
        ' ------------------------------------------------------------------------------
        ' Split a string delimited by characters.
        ' ------------------------------------------------------------------------------
        Console.WriteLine("1) Split a string delimited by characters:" & vbCrLf)
        
        ' Display the original string and delimiter characters.
        Console.WriteLine("1a )The original string is ""{0}"".", s1)
        Console.WriteLine("The delimiter character is '{0}'." & vbCrLf, 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:" & vbCrLf)
        
        ' Display the original string and delimiter string.
        Console.WriteLine("2a) The original string is ""{0}"".", s2)
        Console.WriteLine("The delimiter string is ""{0}""." & vbCrLf, 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)
    
    End Sub
    
    
    ' Display the array of separated strings.
    Public Shared Sub Show(ByVal entries() As String) 
        Console.WriteLine("The return value contains these {0} elements:", entries.Length)
        Dim entry As String
        For Each entry In  entries
            Console.Write("<{0}>", entry)
        Next entry
        Console.Write(vbCrLf & vbCrLf)
    
    End Sub
End Class
'
'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]>
'

Комментарии

Сведения о возвращаемом значенииReturn value details

Строки разделителей не включаются в элементы возвращаемого массива.Delimiter strings are not included in the elements of the returned array.

Если этот экземпляр не содержит строк в separator или параметр count равен 1, то возвращаемый массив состоит из одного элемента, содержащего этот экземпляр.If this instance does not contain any of the strings in separator, or the count parameter is 1, the returned array consists of a single element that contains this instance. Если параметр separator имеет значение null или не содержит символов, то символы пробела считаются разделителями.If the separator parameter is null or contains no characters, white-space characters are assumed to be the delimiters. Символы пробела определяются стандартом Юникода и возвращают true, если они передаются в метод Char.IsWhiteSpace.White-space characters are defined by the Unicode standard and return true if they are passed to the Char.IsWhiteSpace method. Однако если параметр separator в вызове этой перегруженной версии метода равен null, разрешение перегрузки компилятора завершается ошибкой.However, if the separator parameter in the call to this method overload is null, compiler overload resolution fails. Чтобы однозначно определить вызываемый метод, код должен указывать тип null.To unambiguously identify the called method, your code must indicate the type of the null. В следующем примере показано несколько способов однозначного определения этой перегрузки.The following example shows several ways to unambiguously identify this overload.

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);
Dim phrase As String = "The quick brown fox"
Dim words() As String

words = phrase.Split(TryCast(Nothing, String()), 3, 
                       StringSplitOptions.RemoveEmptyEntries)

words = phrase.Split(New String() {}, 3,
                     StringSplitOptions.RemoveEmptyEntries)

Если параметр count равен нулю или параметр options имеет значение RemoveEmptyEntries, а длина этого экземпляра равна нулю, возвращается пустой массив.If the count parameter is zero, or the options parameter is RemoveEmptyEntries and the length of this instance is zero, an empty array is returned.

Каждый элемент separator определяет отдельный разделитель, состоящий из одного или нескольких символов.Each element of separator defines a separate delimiter that consists of one or more characters. Если параметр options имеет значение None, а два разделителя являются смежными или разделитель находится в начале или в конце этого экземпляра, соответствующий элемент массива содержит Empty.If the options parameter is None, and two delimiters are adjacent or a delimiter is found at the beginning or end of this instance, the corresponding array element contains Empty.

Если в этом экземпляре содержится более count подстрок, первая подстрока count минус 1 возвращается в первый count минус 1 элемент возвращаемого значения, а остальные символы в этом экземпляре возвращаются в последнем элементе возвращаемого значения. .If there are more than count substrings in this instance, the first count minus 1 substrings are returned in the first count minus 1 elements of the return value, and the remaining characters in this instance are returned in the last element of the return value.

Если count больше числа подстрок, возвращаются доступные подстроки и исключение не создается.If count is greater than the number of substrings, the available substrings are returned and no exception is thrown.

Массив разделителяThe separator array

Если любой из элементов separator состоит из нескольких символов, вся подстрока считается разделителем.If any of the elements in separator consists of multiple characters, the entire substring is considered a delimiter. Например, если один из элементов в separator равен 10, попытка разделить строку «This10is10a10string».For example, if one of the elements in separator is "10", attempting to split the string "This10is10a10string." Возвращает этот массив из четырех элементов: {"this", "имеет значение", "a", "строка".returns this four-element array: { "This", "is", "a", "string." }.}.

Сведения о сравненииComparison details

Метод Split извлекает подстроки из этой строки, разделенные одной или несколькими строками в параметре separator, и возвращает эти подстроки как элементы массива.The Split method extracts the substrings in this string that are delimited by one or more of the strings in the separator parameter, and returns those substrings as elements of an array.

Метод Split ищет разделители, выполняя сравнения с использованием правил сортировки порядковых номеров с учетом регистра.The Split method looks for delimiters by performing comparisons using case-sensitive ordinal sort rules. Дополнительные сведения о сортировке по словам, строкам и порядковым номерам см. в разделе Перечисление System.Globalization.CompareOptions.For more information about word, string, and ordinal sorts, see the System.Globalization.CompareOptions enumeration.

Метод Split игнорирует любой элемент separator со значением null или пустой строкой ("").The Split method ignores any element of separator whose value is null or the empty string ("").

Чтобы избежать неоднозначных результатов, когда строки в separator содержат общие символы, метод Split продолжается с начала до конца значения экземпляра и соответствует первому элементу в separator, который равен разделителю в экземпляре.To avoid ambiguous results when strings in separator have characters in common, the Split method proceeds from the beginning to the end of the value of the instance, and matches the first element in separator that is equal to a delimiter in the instance. Порядок, в котором подстроки встречаются в экземпляре, имеет приоритет над порядком элементов в separator.The order in which substrings are encountered in the instance takes precedence over the order of elements in separator.

Например, рассмотрим экземпляр, значение которого равно «abcdef».For example, consider an instance whose value is "abcdef". Если первый элемент в separator был "EF", а второй элемент — "bcde", результатом операции разбиения будет "a" и "f".If the first element in separator was "ef" and the second element was "bcde", the result of the split operation would be "a" and "f". Это обусловлено тем, что обнаружена подстрока в экземпляре "bcde", которая соответствует элементу в separator до обнаружения подстроки "f".This is because the substring in the instance, "bcde", is encountered and matches an element in separator before the substring "f" is encountered.

Однако, если первый элемент separator был "BCD", а второй элемент — "BC", результатом операции разбиения будет "a" и "EF".However, if the first element of separator was "bcd" and the second element was "bc", the result of the split operation would be "a" and "ef". Это происходит потому, что "BCD" — это первый разделитель в separator, соответствующий разделителю в экземпляре.This is because "bcd" is the first delimiter in separator that matches a delimiter in the instance. Если порядок разделителей был реверсирован, так что первый элемент был "BC", а второй элемент — "BCD", результатом будет "a" и "def".If the order of the separators was reversed so the first element was "bc" and the second element was "bcd", the result would be "a" and "def".

Особенности производительностиPerformance considerations

Методы Split выделяют память для возвращаемого объекта массива и объект String для каждого элемента массива.The Split methods allocate memory for the returned array object and a String object for each array element. Если приложению требуется оптимальная производительность или управление выделением памяти является критически важным в приложении, рассмотрите возможность использования метода IndexOf или IndexOfAny и, при необходимости, метода Compare для нахождение подстроки в строке.If your application requires optimal performance or if managing memory allocation is critical in your application, consider using the IndexOf or IndexOfAny method, and optionally the Compare method, to locate a substring within a string.

Если строка разделяется с помощью символа разделителя, используйте метод IndexOf или IndexOfAny для нахождение символа разделителя в строке.If you are splitting a string at a separator character, use the IndexOf or IndexOfAny method to locate a separator character in the string. При разделении строки в разделительной строке используйте метод IndexOf или IndexOfAny для нахождение первого символа строки разделителя.If you are splitting a string at a separator string, use the IndexOf or IndexOfAny method to locate the first character of the separator string. Затем используйте метод Compare, чтобы определить, равны ли символы, указанные после первого символа, оставшимся символам строки разделителя.Then use the Compare method to determine whether the characters after that first character are equal to the remaining characters of the separator string.

Кроме того, если для разделения строк в нескольких вызовах методов Split используется один и тот же набор символов, рассмотрите возможность создания одного массива и ссылки на него в каждом вызове метода.In addition, if the same set of characters is used to split strings in multiple Split method calls, consider creating a single array and referencing it in each method call. Это значительно сокращает дополнительную нагрузку на каждый вызов метода.This significantly reduces the additional overhead of each method call.

Примечания для тех, кто вызывает этот метод

В .NET Framework 3,5.NET Framework 3.5 и более ранних версиях, если метод Split(Char[]) передается separator, который имеет значение null или не содержит символов, метод использует слегка отличающийся набор символов, чтобы разделить строку, чем метод Trim(Char[]), чтобы обрезать строку.In the .NET Framework 3,5.NET Framework 3.5 and earlier versions, if the Split(Char[]) method is passed a separator that is null or contains no characters, the method uses a slightly different set of characters to split the string than the Trim(Char[]) method does to trim the string. Начиная с .NET Framework 4, оба метода используют идентичный набор пробельных символов Юникода.Starting with the .NET Framework 4, both methods use an identical set of Unicode white-space characters.

Split(String[], StringSplitOptions)

Разбивает строку на подстроки в зависимости от строк в массиве.Splits a string into substrings based on the strings in an array. Можно указать, включают ли подстроки пустые элементы массива.You can specify whether the substrings include empty array elements.

public:
 cli::array <System::String ^> ^ Split(cli::array <System::String ^> ^ separator, StringSplitOptions options);
[System.Runtime.InteropServices.ComVisible(false)]
public string[] Split (string[] separator, StringSplitOptions options);
member this.Split : string[] * StringSplitOptions -> string[]
Public Function Split (separator As String(), options As StringSplitOptions) As String()

Параметры

separator
String[]

Массив строк, разделяющих подстроки в данной строке, пустой массив, не содержащий разделителей, или null.A string array that delimits the substrings in this string, an empty array that contains no delimiters, or null.

options
StringSplitOptions

RemoveEmptyEntries, чтобы исключить пустые элементы из возвращаемого массива; или None для включения пустых элементов в возвращаемый массив.RemoveEmptyEntries to omit empty array elements from the array returned; or None to include empty array elements in the array returned.

Возвраты

String[]

Массив, элементы которого содержат подстроки данной строки, разделенные одной или более строками из separator.An array whose elements contain the substrings in this string that are delimited by one or more strings in separator. Дополнительные сведения см. в разделе "Примечания".For more information, see the Remarks section.

Атрибуты

Исключения

options не является одним из значений StringSplitOptions.options is not one of the StringSplitOptions values.

Примеры

В следующем примере показано различие в массивах, возвращаемых путем вызова метода String.Split(String[], StringSplitOptions) строки с параметром options, равным StringSplitOptions.None и StringSplitOptions.RemoveEmptyEntries.The following example illustrates the difference in the arrays returned by calling a string's String.Split(String[], StringSplitOptions) method with its options parameter equal to StringSplitOptions.None and StringSplitOptions.RemoveEmptyEntries.

   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'
Module Example
   Public Sub Main()
      Dim source As String = "[stop]ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]"
      Dim stringSeparators() As String = {"[stop]"}
      Dim result() As String
      
      ' Display the original string and delimiter string.
      Console.WriteLine("Splitting the string:{0}   '{1}'.", vbCrLf, source)
      Console.WriteLine()
      Console.WriteLine("Using the delimiter string:{0}   '{1}'.", _
                        vbCrLf, 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("   ")
      For Each s As String In result
         Console.Write("'{0}' ", IIf(String.IsNullOrEmpty(s), "<>", s))                   
      Next
      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("   ")
      For Each s As String In result
         Console.Write("'{0}' ", IIf(String.IsNullOrEmpty(s), "<>", s))                   
      Next
      Console.WriteLine()
   End Sub
End Module
' 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'

В следующем примере определяется массив разделителей, включающих знаки препинания и пробелы.The following example defines an array of separators that include punctuation and white-space characters. Передача этого массива вместе со значением StringSplitOptions.RemoveEmptyEntries в метод Split(String[], StringSplitOptions) возвращает массив, состоящий из отдельных слов из строки.Passing this array along with a value of StringSplitOptions.RemoveEmptyEntries to the Split(String[], StringSplitOptions) method returns an array that consists of the individual words from the string.

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
Module Example
   Public Sub Main()
      Dim separators() As String = {",", ".", "!", "?", ";", ":", " "}
      Dim value As String = "The handsome, energetic, young dog was playing with his smaller, more lethargic litter mate."
      Dim words() As String = value.Split(separators, StringSplitOptions.RemoveEmptyEntries)
      For Each word In words
         Console.WriteLine(word)
      Next   
   End Sub
End Module
' The example displays the following output:
'       The
'       handsome
'       energetic
'       young
'       dog
'       was
'       playing
'       with
'       his
'       smaller
'       more
'       lethargic
'       litter
'       mate

Обратите внимание, что метод вызывается с аргументом options, для которого задано значение StringSplitOptions.RemoveEmptyEntries.Note that the method is called with the options argument set to StringSplitOptions.RemoveEmptyEntries. Это предотвращает включение в возвращаемый массив значений String.Empty, представляющих пустые совпадения подстрок, между знаками препинания и пробелами.This prevents the returned array from including String.Empty values that represent empty substring matches between punctuation marks and white-space characters.

Комментарии

Если строка отделяется от известного набора строк, можно использовать метод Split, чтобы разделить его на подстроки.When a string is delimited by a known set of strings, you can use the Split method to separate it into substrings.

Сведения о возвращаемом значенииReturn value details

Строки разделителей не включаются в элементы возвращаемого массива.Delimiter strings are not included in the elements of the returned array. Например, если массив separator включает строку "--", а значение текущего экземпляра строки — "AA--BB-CC", метод возвращает массив, содержащий три элемента: "AA", "BB" и "CC".For example, if the separator array includes the string "--" and the value of the current string instance is "aa--bb-cc", the method returns an array that contains three elements: "aa", "bb", and "cc".

Если этот экземпляр не содержит строк в separator, возвращаемый массив состоит из одного элемента, содержащего этот экземпляр.If this instance does not contain any of the strings in separator, the returned array consists of a single element that contains this instance.

Если параметр options имеет значение RemoveEmptyEntries, а длина этого экземпляра равна нулю, метод возвращает пустой массив.If the options parameter is RemoveEmptyEntries and the length of this instance is zero, the method returns an empty array.

Каждый элемент separator определяет отдельный разделитель, состоящий из одного или нескольких символов.Each element of separator defines a separate delimiter that consists of one or more characters. Если аргумент options имеет значение None, а два разделителя являются смежными или в начале или в конце этого экземпляра обнаружен разделитель, то соответствующий элемент массива содержит String.Empty.If the options argument is None, and two delimiters are adjacent or a delimiter is found at the beginning or end of this instance, the corresponding array element contains String.Empty. Например, если separator включает два элемента: "-" и "_", значение экземпляра строки — "-_AA-_", а значение аргумента optionsNone, метод возвращает массив проверочного со следующими пятью элементами:For example, if separator includes two elements, "-" and "_", the value of the string instance is "-_aa-_", and the value of the options argument is None, the method returns a sting array with the following five elements:

  1. String.Empty, представляющий пустую строку, предшествующую подстроке "-" с индексом 0.String.Empty, which represents the empty string that precedes the "-" substring at index 0.

  2. String.Empty, представляющий пустую строку между подстрокой "-" с индексом 0 и подстрокой "" с индексом 1.String.Empty, which represents the empty string between the "-" substring at index 0 and the "" substring at index 1.

  3. "AA","aa",

  4. String.Empty, представляющий пустую строку, следующую за подстрокой "" с индексом 4.String.Empty, which represents the empty string that follows the "" substring at index 4.

  5. String.Empty, представляющий пустую строку, следующую за подстрокой "-" в индексе 5.String.Empty, which represents the empty string that follows the "-" substring at index 5.

Массив разделителяThe separator array

Если любой из элементов separator состоит из нескольких символов, вся подстрока считается разделителем.If any of the elements in separator consists of multiple characters, the entire substring is considered a delimiter. Например, если один из элементов в separator равен 10, попытка разделить строку «This10is10a10string».For example, if one of the elements in separator is "10", attempting to split the string "This10is10a10string." Возвращает следующий массив из четырех элементов: {"this", "имеет значение", "a", "строка".returns the following four-element array: { "This", "is", "a", "string." }.}.

Если параметр separator имеет значение null или не содержит символов, то символы пробела считаются разделителями.If the separator parameter is null or contains no characters, white-space characters are assumed to be the delimiters. Символы пробела определяются стандартом Юникода и возвращают true, если они передаются в метод Char.IsWhiteSpace.White-space characters are defined by the Unicode standard and return true if they are passed to the Char.IsWhiteSpace method.

Если параметр separator в вызове этой перегрузки метода имеет значение null, разрешение перегрузки компилятора завершается ошибкой.If the separator parameter in the call to this method overload is null, compiler overload resolution fails. Чтобы однозначно определить вызываемый метод, код должен указывать тип null.To unambiguously identify the called method, your code must indicate the type of the null. В следующем примере показано несколько способов однозначного определения этой перегрузки.The following example shows several ways to unambiguously identify this overload.

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);
Dim phrase As String = "The quick brown fox"
Dim words() As String

words = phrase.Split(TryCast(Nothing, String()),  
                       StringSplitOptions.RemoveEmptyEntries)

words = phrase.Split(New String() {},
                     StringSplitOptions.RemoveEmptyEntries)

Сведения о сравненииComparison details

Метод Split извлекает подстроки из этой строки, разделенные одной или несколькими строками в параметре separator, и возвращает эти подстроки как элементы массива.The Split method extracts the substrings in this string that are delimited by one or more of the strings in the separator parameter, and returns those substrings as elements of an array.

Метод Split ищет разделители, выполняя сравнения с использованием правил сортировки порядковых номеров с учетом регистра.The Split method looks for delimiters by performing comparisons using case-sensitive ordinal sort rules. Дополнительные сведения о сортировке по словам, строкам и порядковым номерам см. в разделе Перечисление System.Globalization.CompareOptions.For more information about word, string, and ordinal sorts, see the System.Globalization.CompareOptions enumeration.

Метод Split игнорирует любой элемент separator со значением null или пустой строкой ("").The Split method ignores any element of separator whose value is null or the empty string ("").

Чтобы избежать неоднозначных результатов, когда строки в separator содержат общие символы, операция Split продолжается от начала до конца значения экземпляра и соответствует первому элементу в separator, который равен разделителю в экземпляре.To avoid ambiguous results when strings in separator have characters in common, the Split operation proceeds from the beginning to the end of the value of the instance, and matches the first element in separator that is equal to a delimiter in the instance. Порядок, в котором подстроки встречаются в экземпляре, имеет приоритет над порядком элементов в separator.The order in which substrings are encountered in the instance takes precedence over the order of elements in separator.

Например, рассмотрим экземпляр, значение которого равно «abcdef».For example, consider an instance whose value is "abcdef". Если первый элемент в separator был "EF", а второй элемент — "bcde", результатом операции разбиения будет массив строк, содержащий два элемента: "a" и "f".If the first element in separator was "ef" and the second element was "bcde", the result of the split operation would be a string array that contains two elements, "a" and "f". Это обусловлено тем, что обнаружена подстрока в экземпляре "bcde", которая соответствует элементу в separator до обнаружения подстроки "f".This is because the substring in the instance, "bcde", is encountered and matches an element in separator before the substring "f" is encountered.

Однако, если первый элемент separator был "BCD", а второй элемент был "BC", результатом операции разбиения будет массив строк, содержащий два элемента: "a" и "EF".However, if the first element of separator was "bcd" and the second element was "bc", the result of the split operation would be a string array that contains two elements, "a" and "ef". Это происходит потому, что "BCD" — это первый разделитель в separator, соответствующий разделителю в экземпляре.This is because "bcd" is the first delimiter in separator that matches a delimiter in the instance. Если порядок разделителей был реверсирован, так что первый элемент был "BC", а второй — "BCD", результатом будет массив строк, содержащий два элемента: "a" и "def".If the order of the separators was reversed so the first element was "bc" and the second element was "bcd", the result would be a string array that contains two elements, "a" and "def".

Особенности производительностиPerformance considerations

Методы Split выделяют память для возвращаемого объекта массива и объект String для каждого элемента массива.The Split methods allocate memory for the returned array object and a String object for each array element. Если приложению требуется оптимальная производительность или управление выделением памяти является критически важным в приложении, рассмотрите возможность использования метода IndexOf или IndexOfAny и, при необходимости, метода Compare для нахождение подстроки в строке.If your application requires optimal performance or if managing memory allocation is critical in your application, consider using the IndexOf or IndexOfAny method, and optionally the Compare method, to locate a substring within a string.

Если строка разделяется с помощью символа разделителя, используйте метод IndexOf или IndexOfAny для нахождение символа разделителя в строке.If you are splitting a string at a separator character, use the IndexOf or IndexOfAny method to locate a separator character in the string. При разделении строки в разделительной строке используйте метод IndexOf или IndexOfAny для нахождение первого символа строки разделителя.If you are splitting a string at a separator string, use the IndexOf or IndexOfAny method to locate the first character of the separator string. Затем используйте метод Compare, чтобы определить, равны ли символы, указанные после первого символа, оставшимся символам строки разделителя.Then use the Compare method to determine whether the characters after that first character are equal to the remaining characters of the separator string.

Кроме того, если для разделения строк в нескольких вызовах методов Split используется один и тот же набор символов, рассмотрите возможность создания одного массива и ссылки на него в каждом вызове метода.In addition, if the same set of characters is used to split strings in multiple Split method calls, consider creating a single array and referencing it in each method call. Это значительно сокращает дополнительную нагрузку на каждый вызов метода.This significantly reduces the additional overhead of each method call.

Примечания для тех, кто вызывает этот метод

В .NET Framework 3,5.NET Framework 3.5 и более ранних версиях, если метод Split(Char[]) передается separator, который имеет значение null или не содержит символов, метод использует слегка отличающийся набор символов, чтобы разделить строку, чем метод Trim(Char[]), чтобы обрезать строку.In the .NET Framework 3,5.NET Framework 3.5 and earlier versions, if the Split(Char[]) method is passed a separator that is null or contains no characters, the method uses a slightly different set of characters to split the string than the Trim(Char[]) method does to trim the string. Начиная с .NET Framework 4, оба метода используют идентичный набор пробельных символов Юникода.Starting with the .NET Framework 4, both methods use an identical set of Unicode white-space characters.

Split(String, Int32, StringSplitOptions)

Разделяет строку на максимальное количество подстрок в соответствии с указанной строкой-разделителем.Splits a string into a maximum number of substrings based on the provided string separator.

public string[] Split (string separator, int count, StringSplitOptions options = System.StringSplitOptions.None);
member this.Split : string * int * StringSplitOptions -> string[]
Public Function Split (separator As String, count As Integer, Optional options As StringSplitOptions = System.StringSplitOptions.None) As String()

Параметры

separator
String

Строка, разделяющая подстроки в этом экземпляре.A string that delimits the substrings in this instance.

count
Int32

Максимальное количество элементов в массиве.The maximum number of elements expected in the array.

options
StringSplitOptions

Одно из значений перечисления, определяющее, должны ли пустые подстроки исключаться из возвращаемого значения при разделении.One of the enumeration values that determines whether the split operation should omit empty substrings from the return value.

Возвраты

String[]

Массив, элементы которого содержат максимум count подстрок из этого экземпляра, разделенных символом separator.An array whose elements contain at most count substrings from this instance that are delimited by separator.

Комментарии

Если строка уже была разбита count-1 раз, но конец строки не был достигнут, последняя строка в возвращенном массиве будет содержать оставшуюся конечную подстроку этого экземпляра без вмешательства пользователя.If the string has already been split count - 1 times, but the end of the string has not been reached, then the last string in the returned array will contain this instance's remaining trailing substring, untouched.

Split(Char[], StringSplitOptions)

Разбивает строку на подстроки в зависимости от символов в массиве.Splits a string into substrings based on the characters in an array. Можно указать, включают ли подстроки пустые элементы массива.You can specify whether the substrings include empty array elements.

public:
 cli::array <System::String ^> ^ Split(cli::array <char> ^ separator, StringSplitOptions options);
[System.Runtime.InteropServices.ComVisible(false)]
public string[] Split (char[] separator, StringSplitOptions options);
member this.Split : char[] * StringSplitOptions -> string[]
Public Function Split (separator As Char(), options As StringSplitOptions) As String()

Параметры

separator
Char[]

Массив символов, разделяющий подстроки в данной строке, пустой массив, не содержащий разделителей, или null.A character array that delimits the substrings in this string, an empty array that contains no delimiters, or null.

options
StringSplitOptions

RemoveEmptyEntries, чтобы исключить пустые элементы из возвращаемого массива; или None для включения пустых элементов в возвращаемый массив.RemoveEmptyEntries to omit empty array elements from the array returned; or None to include empty array elements in the array returned.

Возвраты

String[]

Массив, элементы которого содержат подстроки данной строки, разделенные одним или более знаками из separator.An array whose elements contain the substrings in this string that are delimited by one or more characters in separator. Дополнительные сведения см. в разделе "Примечания".For more information, see the Remarks section.

Атрибуты

Исключения

options не является одним из значений StringSplitOptions.options is not one of the StringSplitOptions values.

Примеры

В следующем примере используется перечисление StringSplitOptions для включения или исключения подстрок, созданных методом Split.The following example uses the StringSplitOptions enumeration to include or exclude substrings generated by the Split method.

// This example demonstrates the String.Split(Char[], Boolean) and 
//                               String.Split(Char[], Int32, Boolean) methods
using namespace System;
void Show( array<String^>^entries )
{
   Console::WriteLine( "The return value contains these {0} elements:", entries->Length );
   System::Collections::IEnumerator^ myEnum = entries->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      String^ entry = safe_cast<String^>(myEnum->Current);
      Console::Write( "<{0}>", entry );
   }

   Console::Write( "{0}{0}", Environment::NewLine );
}

int main()
{
   String^ s = ",one,,,two,,,,,three,,";
   array<Char>^sep = gcnew array<Char>{
      ','
   };
   array<String^>^result;
   
   //
   Console::WriteLine( "The original string is \"{0}\".", s );
   Console::WriteLine( "The separation character is '{0}'.", sep[ 0 ] );
   Console::WriteLine();
   
   //
   Console::WriteLine( "Split the string and return all elements:" );
   result = s->Split( sep, StringSplitOptions::None );
   Show( result );
   
   //
   Console::WriteLine( "Split the string and return all non-empty elements:" );
   result = s->Split( sep, StringSplitOptions::RemoveEmptyEntries );
   Show( result );
   
   //
   Console::WriteLine( "Split the string and return 2 elements:" );
   result = s->Split( sep, 2, StringSplitOptions::None );
   Show( result );
   
   //
   Console::WriteLine( "Split the string and return 2 non-empty elements:" );
   result = s->Split( sep, 2, StringSplitOptions::RemoveEmptyEntries );
   Show( result );
}

/*
This example produces the following results:

The original string is ",one,,,two,,,,,three,,".
The separation character is ','.

Split the string and return all elements:
The return value contains these 12 elements:
<><one><><><two><><><><><three><><>

Split the string and return all non-empty elements:
The return value contains these 3 elements:
<one><two><three>

Split the string and return 2 elements:
The return value contains these 2 elements:
<><one,,,two,,,,,three,,>

Split the string and return 2 non-empty elements:
The return value contains these 2 elements:
<one><,,two,,,,,three,,>

*/
// This example demonstrates the String() methods that use
// the StringSplitOptions enumeration.
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 using a local function
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]>

*/

' This example demonstrates the String() methods that use
' the StringSplitOptions enumeration.
Class Sample
    Public Shared Sub Main() 
        Dim s1 As String = ",ONE,,TWO,,,THREE,,"
        Dim s2 As String = "[stop]" & _
                           "ONE[stop][stop]" & _
                           "TWO[stop][stop][stop]" & _
                           "THREE[stop][stop]"
        Dim charSeparators() As Char = {","c}
        Dim stringSeparators() As String = {"[stop]"}
        Dim result() As String
        ' ------------------------------------------------------------------------------
        ' Split a string delimited by characters.
        ' ------------------------------------------------------------------------------
        Console.WriteLine("1) Split a string delimited by characters:" & vbCrLf)
        
        ' Display the original string and delimiter characters.
        Console.WriteLine("1a )The original string is ""{0}"".", s1)
        Console.WriteLine("The delimiter character is '{0}'." & vbCrLf, 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:" & vbCrLf)
        
        ' Display the original string and delimiter string.
        Console.WriteLine("2a) The original string is ""{0}"".", s2)
        Console.WriteLine("The delimiter string is ""{0}""." & vbCrLf, 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)
    
    End Sub
    
    
    ' Display the array of separated strings.
    Public Shared Sub Show(ByVal entries() As String) 
        Console.WriteLine("The return value contains these {0} elements:", entries.Length)
        Dim entry As String
        For Each entry In  entries
            Console.Write("<{0}>", entry)
        Next entry
        Console.Write(vbCrLf & vbCrLf)
    
    End Sub
End Class
'
'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]>
'

Комментарии

Сведения о возвращаемом значенииReturn value details

Знаки-разделители (символы в массиве separator) не включаются в элементы возвращаемого массива.Delimiter characters (the characters in the separator array) are not included in the elements of the returned array. Например, если массив separator содержит символ "-", а значение текущего экземпляра строки — "AA-BB-CC", метод возвращает массив, содержащий три элемента: "AA", "BB" и "CC".For example, if the separator array includes the character "-" and the value of the current string instance is "aa-bb-cc", the method returns an array that contains three elements: "aa", "bb", and "cc".

Если этот экземпляр не содержит символов в separator, возвращаемый массив состоит из одного элемента, содержащего этот экземпляр.If this instance does not contain any of the characters in separator, the returned array consists of a single element that contains this instance.

Если параметр options имеет значение RemoveEmptyEntries, а длина этого экземпляра равна нулю, метод возвращает пустой массив.If the options parameter is RemoveEmptyEntries and the length of this instance is zero, the method returns an empty array.

Каждый элемент separator определяет отдельный разделитель, состоящий из одного символа.Each element of separator defines a separate delimiter that consists of a single character. Если аргумент options имеет значение None, а два разделителя являются смежными или в начале или в конце этого экземпляра обнаружен разделитель, то соответствующий элемент массива содержит String.Empty.If the options argument is None, and two delimiters are adjacent or a delimiter is found at the beginning or end of this instance, the corresponding array element contains String.Empty. Например, если separator включает два элемента: "-" и "_", значение экземпляра строки — "-_AA-_", а значение аргумента optionsNone, метод возвращает массив строк со следующими пятью элементами:For example, if separator includes two elements, "-" and "_", the value of the string instance is "-_aa-_", and the value of the options argument is None, the method returns a string array with the following five elements:

  1. String.Empty, представляющий пустую строку, предшествующую символу "-" с индексом 0.String.Empty, which represents the empty string that precedes the "-" character at index 0.

  2. String.Empty, представляющий пустую строку между символом "-" в индексе 0 и символом "" в индексе 1.String.Empty, which represents the empty string between the "-" character at index 0 and the "" character at index 1.

  3. "AA","aa",

  4. String.Empty, представляющий пустую строку, следующую за символом "" в индексе 4.String.Empty, which represents the empty string that follows the "" character at index 4.

  5. String.Empty, представляющий пустую строку, которая соответствует символу "-" в индексе 5.String.Empty, which represents the empty string that follows the "-" character at index 5.

Массив разделителяThe separator array

Если параметр separator имеет значение null или не содержит символов, то символы пробела считаются разделителями.If the separator parameter is null or contains no characters, white-space characters are assumed to be the delimiters. Символы пробела определяются стандартом Юникода и возвращают true, если они передаются в метод Char.IsWhiteSpace.White-space characters are defined by the Unicode standard and return true if they are passed to the Char.IsWhiteSpace method.

Если параметр separator в вызове этой перегрузки метода имеет значение null, разрешение перегрузки компилятора завершается ошибкой.If the separator parameter in the call to this method overload is null, compiler overload resolution fails. Чтобы однозначно определить вызываемый метод, код должен указывать тип null.To unambiguously identify the called method, your code must indicate the type of the null. В следующем примере показано несколько способов однозначного определения этой перегрузки.The following example shows several ways to unambiguously identify this overload.

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);
Dim phrase As String = "The quick brown fox"
Dim words() As String

words = phrase.Split(TryCast(Nothing, Char()),  
                       StringSplitOptions.RemoveEmptyEntries)

words = phrase.Split(New Char() {}, 
                     StringSplitOptions.RemoveEmptyEntries)

Сведения о сравненииComparison details

Метод Split извлекает подстроки из этой строки, разделенные одним или несколькими символами в параметре separator, и возвращает эти подстроки как элементы массива.The Split method extracts the substrings in this string that are delimited by one or more of the characters in the separator parameter, and returns those substrings as elements of an array.

Метод Split ищет разделители, выполняя сравнения с использованием правил сортировки порядковых номеров с учетом регистра.The Split method looks for delimiters by performing comparisons using case-sensitive ordinal sort rules. Дополнительные сведения о сортировке по словам, строкам и порядковым номерам см. в разделе Перечисление System.Globalization.CompareOptions.For more information about word, string, and ordinal sorts, see the System.Globalization.CompareOptions enumeration.

Особенности производительностиPerformance Considerations

Методы Split выделяют память для возвращаемого объекта массива и объект String для каждого элемента массива.The Split methods allocate memory for the returned array object and a String object for each array element. Если приложению требуется оптимальная производительность или управление выделением памяти является критически важным в приложении, рассмотрите возможность использования метода IndexOf или IndexOfAny и, при необходимости, метода Compare для нахождение подстроки в строке.If your application requires optimal performance or if managing memory allocation is critical in your application, consider using the IndexOf or IndexOfAny method, and optionally the Compare method, to locate a substring within a string.

Если строка разделяется с помощью символа разделителя, используйте метод IndexOf или IndexOfAny для нахождение символа разделителя в строке.If you are splitting a string at a separator character, use the IndexOf or IndexOfAny method to locate a separator character in the string. При разделении строки в разделительной строке используйте метод IndexOf или IndexOfAny для нахождение первого символа строки разделителя.If you are splitting a string at a separator string, use the IndexOf or IndexOfAny method to locate the first character of the separator string. Затем используйте метод Compare, чтобы определить, равны ли символы, указанные после первого символа, оставшимся символам строки разделителя.Then use the Compare method to determine whether the characters after that first character are equal to the remaining characters of the separator string.

Кроме того, если для разделения строк в нескольких вызовах методов Split используется один и тот же набор символов, рассмотрите возможность создания одного массива и ссылки на него в каждом вызове метода.In addition, if the same set of characters is used to split strings in multiple Split method calls, consider creating a single array and referencing it in each method call. Это значительно сокращает дополнительную нагрузку на каждый вызов метода.This significantly reduces the additional overhead of each method call.

Примечания для тех, кто вызывает этот метод

В .NET Framework 3,5.NET Framework 3.5 и более ранних версиях, если метод Split(Char[]) передается separator, который имеет значение null или не содержит символов, метод использует слегка отличающийся набор символов, чтобы разделить строку, чем метод Trim(Char[]), чтобы обрезать строку.In the .NET Framework 3,5.NET Framework 3.5 and earlier versions, if the Split(Char[]) method is passed a separator that is null or contains no characters, the method uses a slightly different set of characters to split the string than the Trim(Char[]) method does to trim the string. Начиная с .NET Framework 4, оба метода используют идентичный набор пробельных символов Юникода.Starting with the .NET Framework 4, both methods use an identical set of Unicode white-space characters.

Split(Char[], Int32)

Разбивает строку на максимальное число подстрок в зависимости от символов в массиве.Splits a string into a maximum number of substrings based on the characters in an array. Можно также указать максимальное число возвращаемых подстрок.You also specify the maximum number of substrings to return.

public:
 cli::array <System::String ^> ^ Split(cli::array <char> ^ separator, int count);
public string[] Split (char[] separator, int count);
member this.Split : char[] * int -> string[]
Public Function Split (separator As Char(), count As Integer) As String()

Параметры

separator
Char[]

Массив символов, разделяющий подстроки в данной строке, пустой массив, не содержащий разделителей, или null.A character array that delimits the substrings in this string, an empty array that contains no delimiters, or null.

count
Int32

Максимальное число возвращаемых подстрок.The maximum number of substrings to return.

Возвраты

String[]

Массив, элементы которого содержат подстроки данного экземпляра, разделенные одним или более знаками из separator.An array whose elements contain the substrings in this instance that are delimited by one or more characters in separator. Дополнительные сведения см. в разделе "Примечания".For more information, see the Remarks section.

Исключения

count является отрицательным значением.count is negative.

Примеры

В следующем примере показано, как count влияет на количество строк, возвращаемых Split.The following example demonstrates how count affects the number of strings returned by Split.

string delimStr = " ,.:";
char [] delimiter = delimStr.ToCharArray();
string words = "one two,three:four.";
string [] split = null;

Console.WriteLine("The delimiters are -{0}-", delimStr);
for (int x = 1; x <= 5; x++) 
{
   split = words.Split(delimiter, x);
   Console.WriteLine("\ncount = {0,2} ..............", x);
   foreach (var s in split) 
   {
       Console.WriteLine("-{0}-", s);
   }
}

// The example displays the following output:
//       The delimiters are - ,.:-
//       count =  1 ..............
//       -one two,three:four.-
//       count =  2 ..............
//       -one-
//       -two,three:four.-
//       count =  3 ..............
//       -one-
//       -two-
//       -three:four.-
//       count =  4 ..............
//       -one-
//       -two-
//       -three-
//       -four.-
//       count =  5 ..............
//       -one-
//       -two-
//       -three-
//       -four-
//       --
Public Class StringSplit2
   Public Shared Sub Main()
      
      Dim delimStr As String = " ,.:"
      Dim delimiter As Char() = delimStr.ToCharArray()
      Dim words As String = "one two,three:four."
      Dim split As String() = Nothing
      
      Console.WriteLine("The delimiters are -{0}-", delimStr)
      Dim x As Integer
      For x = 1 To 5
         split = words.Split(delimiter, x)
         Console.WriteLine(ControlChars.Cr + "count = {0,2} ..............", x)
         Dim s As String
         For Each s In  split
            Console.WriteLine("-{0}-", s)
         Next s
      Next x
   End Sub 
End Class 
' The example displays the following output:
'       The delimiters are - ,.:-
'       count =  1 ..............
'       -one two,three:four.-
'       count =  2 ..............
'       -one-
'       -two,three:four.-
'       count =  3 ..............
'       -one-
'       -two-
'       -three:four.-
'       count =  4 ..............
'       -one-
'       -two-
'       -three-
'       -four.-
'       count =  5 ..............
'       -one-
'       -two-
'       -three-
'       -four-
'       --

Комментарии

Символы разделителей не включаются в элементы возвращаемого массива.Delimiter characters are not included in the elements of the returned array.

Если этот экземпляр не содержит символов в separator, возвращаемый массив состоит из одного элемента, содержащего этот экземпляр.If this instance does not contain any of the characters in separator, the returned array consists of a single element that contains this instance. Если count равен нулю, возвращается пустой массив.If count is zero, an empty array is returned.

Если параметр separator имеет значение null или не содержит символов, то символы пробела считаются разделителями.If the separator parameter is null or contains no characters, white-space characters are assumed to be the delimiters. Символы пробела определяются стандартом Юникода и возвращают true, если они передаются в метод Char.IsWhiteSpace.White-space characters are defined by the Unicode standard and return true if they are passed to the Char.IsWhiteSpace method.

Каждый элемент separator определяет отдельный разделитель.Each element of separator defines a separate delimiter character. Если два разделителя являются смежными или обнаружен разделитель в начале или в конце этого экземпляра, соответствующий элемент массива содержит Empty.If two delimiters are adjacent, or a delimiter is found at the beginning or end of this instance, the corresponding array element contains Empty.

Если в этом экземпляре содержится более count подстрок, первая подстрока count минус 1 возвращается в первый count минус 1 элемент возвращаемого значения, а остальные символы в этом экземпляре возвращаются в последнем элементе возвращаемого значения. .If there are more than count substrings in this instance, the first count minus 1 substrings are returned in the first count minus 1 elements of the return value, and the remaining characters in this instance are returned in the last element of the return value.

Если count больше числа подстрок, возвращаются доступные подстроки и исключение не создается.If count is greater than the number of substrings, the available substrings are returned and no exception is thrown.

В следующей таблице приведены примеры.The following table provides examples.

Строковое значениеString value SeparatorSeparator CountCount Возвращаемый массивReturned array
"42, 12, 19""42, 12, 19" New char [] {', ', ' '} (C#)new Char[] {',', ' '} (C#)

Char () = {"," c, "" c} (Visual Basic)Char() = {","c, " "c} (Visual Basic)
22 {"42", " 12, 19"}{"42", " 12, 19"}
"42..12..19""42..12..19" New char [] {'. '}new Char[] {'.'} (C#)(C#)

Char () = {"." c} (Visual Basic)Char() = {"."c} (Visual Basic)
44 {"42", "", "12", ".19"}{"42", "", "12", ".19"}
Банан"Banana" New char [] {'. '}new Char[] {'.'} (C#)(C#)

Char () = {"." c} (Visual Basic)Char() = {"."c} (Visual Basic)
22 {"Полукруглое"}{"Banana"}
"Дарб\нсмарба" (C#)"Darb\nSmarba" (C#)

"Дарб" & Вблф & "Смарба" (Visual Basic)"Darb" & vbLf & "Smarba" (Visual Basic)
New char [] {} (C#)new Char[] {} (C#)

Char () = {} (Visual Basic)Char() = {} (Visual Basic)
11 {"Дарб\нсмарба"} (C#){"Darb\nSmarba"} (C#)

"Дарб" & Вблф & "Смарба" (Visual Basic)"Darb" & vbLf & "Smarba" (Visual Basic)
"Дарб\нсмарба" (C#)"Darb\nSmarba" (C#)

"Дарб" & Вблф & "Смарба" (Visual Basic)"Darb" & vbLf & "Smarba" (Visual Basic)
New char [] null (C#)new Char[] null (C#)

Char () = NothingChar() = Nothing
22 {"Дарб", "Смарба"}{"Darb", "Smarba"}
"Дарб\нсмарба" (C#)"Darb\nSmarba" (C#)

"Дарб" & Вблф & "Смарба" (Visual Basic)"Darb" & vbLf & "Smarba" (Visual Basic)
New char [] null (C#)new Char[] null (C#)

Char () = NothingChar() = Nothing
100100 {"Дарб", "Смарба"}{"Darb", "Smarba"}

Особенности производительностиPerformance Considerations

Методы Split выделяют память для возвращаемого объекта массива и объект String для каждого элемента массива.The Split methods allocate memory for the returned array object and a String object for each array element. Если приложению требуется оптимальная производительность или управление выделением памяти является критически важным в приложении, рассмотрите возможность использования метода IndexOf или IndexOfAny и, при необходимости, метода Compare для нахождение подстроки в строке.If your application requires optimal performance or if managing memory allocation is critical in your application, consider using the IndexOf or IndexOfAny method, and optionally the Compare method, to locate a substring within a string.

Если строка разделяется с помощью символа разделителя, используйте метод IndexOf или IndexOfAny для нахождение символа разделителя в строке.If you are splitting a string at a separator character, use the IndexOf or IndexOfAny method to locate a separator character in the string. При разделении строки в разделительной строке используйте метод IndexOf или IndexOfAny для нахождение первого символа строки разделителя.If you are splitting a string at a separator string, use the IndexOf or IndexOfAny method to locate the first character of the separator string. Затем используйте метод Compare, чтобы определить, равны ли символы, указанные после первого символа, оставшимся символам строки разделителя.Then use the Compare method to determine whether the characters after that first character are equal to the remaining characters of the separator string.

Кроме того, если для разделения строк в нескольких вызовах методов Split используется один и тот же набор символов, рассмотрите возможность создания одного массива и ссылки на него в каждом вызове метода.In addition, if the same set of characters is used to split strings in multiple Split method calls, consider creating a single array and referencing it in each method call. Это значительно сокращает дополнительную нагрузку на каждый вызов метода.This significantly reduces the additional overhead of each method call.

Примечания для тех, кто вызывает этот метод

В .NET Framework 3,5.NET Framework 3.5 и более ранних версиях, если метод Split(Char[]) передается separator, который имеет значение null или не содержит символов, метод использует слегка отличающийся набор символов, чтобы разделить строку, чем метод Trim(Char[]), чтобы обрезать строку.In the .NET Framework 3,5.NET Framework 3.5 and earlier versions, if the Split(Char[]) method is passed a separator that is null or contains no characters, the method uses a slightly different set of characters to split the string than the Trim(Char[]) method does to trim the string. Начиная с .NET Framework 4, оба метода используют идентичный набор пробельных символов Юникода.Starting with the .NET Framework 4, both methods use an identical set of Unicode white-space characters.

Дополнительно

Split(Char, StringSplitOptions)

Разделяет строку на подстроки в соответствии с указанным символом-разделителем.Splits a string into substrings based on the provided character separator.

public string[] Split (char separator, StringSplitOptions options = System.StringSplitOptions.None);
member this.Split : char * StringSplitOptions -> string[]
Public Function Split (separator As Char, Optional options As StringSplitOptions = System.StringSplitOptions.None) As String()

Параметры

separator
Char

Символ, разделяющий подстроки в этой строке.A character that delimits the substrings in this string.

options
StringSplitOptions

Одно из значений перечисления, определяющее, должны ли пустые подстроки исключаться из возвращаемого значения при разделении.One of the enumeration values that determines whether the split operation should omit empty substrings from the return value.

Возвраты

String[]

Массив, элементы которого содержат подстроки из этого экземпляра, разделенные символом separator.An array whose elements contain the substrings from this instance that are delimited by separator.

Split(String, StringSplitOptions)

Разделяет строку на подстроки в соответствии с указанной строкой-разделителем.Splits a string into substrings that are based on the provided string separator.

public string[] Split (string separator, StringSplitOptions options = System.StringSplitOptions.None);
member this.Split : string * StringSplitOptions -> string[]
Public Function Split (separator As String, Optional options As StringSplitOptions = System.StringSplitOptions.None) As String()

Параметры

separator
String

Строка, разделяющая подстроки в этой строке.A string that delimits the substrings in this string.

options
StringSplitOptions

Одно из значений перечисления, определяющее, должны ли пустые подстроки исключаться из возвращаемого значения при разделении.One of the enumeration values that determines whether the split operation should omit empty substrings from the return value.

Возвраты

String[]

Массив, элементы которого содержат подстроки из этого экземпляра, разделенные символом separator.An array whose elements contain the substrings from this instance that are delimited by separator.

Split(Char[])

Разделяет строку на подстроки в зависимости от символов в массиве разделителей.Splits a string into substrings that are based on the characters in the separator array.

public:
 cli::array <System::String ^> ^ Split(... cli::array <char> ^ separator);
public string[] Split (params char[] separator);
member this.Split : char[] -> string[]
Public Function Split (ParamArray separator As Char()) As String()

Параметры

separator
Char[]

Массив символов, разделяющий подстроки в данной строке, пустой массив, не содержащий разделителей, или null.A character array that delimits the substrings in this string, an empty array that contains no delimiters, or null.

Возвраты

String[]

Массив, элементы которого содержат подстроки из этого экземпляра, разделенные символами из separator.An array whose elements contain the substrings from this instance that are delimited by one or more characters in separator. Дополнительные сведения см. в разделе "Примечания".For more information, see the Remarks section.

Примеры

В следующем примере показано, как извлечь отдельные слова из блока текста, рассматривая пробелы и знаки пунктуации в качестве разделителей.The following example demonstrates how to extract individual words from a block of text by treating white space and punctuation marks as delimiters. Массив символов, передаваемый параметру separator метода String.Split(Char[]), состоит из символа пробела и символа табуляции вместе с некоторыми общими символами пунктуации.The character array passed to the separator parameter of the String.Split(Char[]) method consists of a space character and a tab character, together with some common punctuation symbols.

string words = "This is a list of words, with: a bit of punctuation" +
               "\tand a tab character.";

string [] split = words.Split(new Char [] {' ', ',', '.', ':', '\t' });

foreach (string s in split) 
{

    if (s.Trim() != "")
        Console.WriteLine(s);
}

// The example displays the following output to the console:
//       This
//       is
//       a
//       list
//       of
//       words
//       with
//       a
//       bit
//       of
//       punctuation
//       and
//       a
//       tab
//       character
Public Class SplitTest
    Public Shared Sub Main()
        Dim words As String = "This is a list of words, with: a bit of punctuation" + _
                              vbTab + "and a tab character."
        Dim split As String() = words.Split(New [Char]() {" "c, ","c, "."c, ":"c, CChar(vbTab) })
                
        For Each s As String In  split
            If s.Trim() <> "" Then
                Console.WriteLine(s)
            End If
        Next s
    End Sub
End Class
' The example displays the following output to the console:
'       This
'       is
'       a
'       list
'       of
'       words
'       with
'       a
'       bit
'       of
'       punctuation
'       and
'       a
'       tab
'       character

Комментарии

Если строка отделяется от известного набора символов, можно использовать метод Split(Char[]), чтобы разделить его на подстроки.When a string is delimited by a known set of characters, you can use the Split(Char[]) method to separate it into substrings.

Сведения о возвращаемом значенииReturn value details

Символы разделителей не включаются в элементы возвращаемого массива.Delimiter characters are not included in the elements of the returned array. Например, если массив разделителя содержит символ "-", а значение текущего экземпляра строки — "AA-BB-CC", метод возвращает массив, содержащий три элемента: "AA", "BB" и "CC".For example, if the separator array includes the character "-" and the value of the current string instance is "aa-bb-cc", the method returns an array that contains three elements: "aa", "bb", and "cc".

Если этот экземпляр не содержит символов в separator, возвращаемый массив состоит из одного элемента, содержащего этот экземпляр.If this instance does not contain any of the characters in separator, the returned array consists of a single element that contains this instance.

Каждый элемент separator определяет отдельный разделитель.Each element of separator defines a separate delimiter character. Если два разделителя являются смежными или обнаружен разделитель в начале или в конце этого экземпляра, соответствующий элемент в возвращаемом массиве содержит Empty.If two delimiters are adjacent, or a delimiter is found at the beginning or end of this instance, the corresponding element in the returned array contains Empty. Далее приводятся некоторые примеры.Here are some examples:

Строковое значениеString value SeparatorSeparator Возвращаемый массивReturned array
"42, 12, 19""42, 12, 19" New char [] {', ', ' '} (C#)new Char[] {',', ' '} (C#)

Char () = {"," c, "" c}) (Visual Basic)Char() = {","c, " "c}) (Visual Basic)
{"42", "", "12", "", "19"}{"42", "", "12", "", "19"}
"42..12..19""42..12..19" New char [] {'. '}new Char[] {'.'} (C#)(C#)

Char () = {"." c} (Visual Basic)Char() = {"."c} (Visual Basic)
{"42", "", "12", "", "19"}{"42", "", "12", "", "19"}
Банан"Banana" New char [] {'. '}new Char[] {'.'} (C#)(C#)

Char () = {"." c} (Visual Basic)Char() = {"."c} (Visual Basic)
{"Полукруглое"}{"Banana"}
"Дарб\нсмарба" (C#)"Darb\nSmarba" (C#)

"Дарб" & Вблф & "Смарба" (Visual Basic)"Darb" & vbLf & "Smarba" (Visual Basic)
New char [] {} (C#)new Char[] {} (C#)

Char () = {} (Visual Basic)Char() = {} (Visual Basic)
{"Дарб", "Смарба"}{"Darb", "Smarba"}
"Дарб\нсмарба" (C#)"Darb\nSmarba" (C#)

"Дарб" & Вблф & "Смарба" (Visual Basic)"Darb" & vbLf & "Smarba" (Visual Basic)
null (C#)null (C#)

Nothing (Visual Basic)Nothing (Visual Basic)
{"Дарб", "Смарба"}{"Darb", "Smarba"}

Массив разделителяThe separator array

Каждый элемент разделителя определяет отдельный разделитель, состоящий из одного символа.Each element of separator defines a separate delimiter that consists of a single character. Если аргумент separator имеет null или не содержит символов, метод рассматривает пробельные символы как разделители.If the separator argument is null or contains no characters, the method treats white-space characters as the delimiters. Пробельные символы определяются стандартом Unicode. они возвращают true, если они передаются в метод Char.IsWhiteSpace.White-space characters are defined by the Unicode standard; they return true if they are passed to the Char.IsWhiteSpace method.

String. Split (char []) и разрешение перегрузки компилятораString.Split(Char[]) and compiler overload resolution

Хотя один параметр для этой перегрузки String.Split является массивом символов, его можно вызвать с помощью одного символа, как показано в следующем примере.Although the single parameter for this overload of String.Split is a character array, you can call it with a single character, as the following example shows.

String value = "This is a short string.";
Char delimiter = 's';
String[] substrings = value.Split(delimiter);
foreach (var substring in substrings)
   Console.WriteLine(substring);
// The example displays the following output:
//     Thi
//      i
//      a
//     hort
//     tring.
Module Example
   Public Sub Main()
      Dim value As String = "This is a short string."
      Dim delimiter As Char = "s"c
      Dim substrings() As String = value.Split(delimiter)
      For Each substring In substrings
         Console.WriteLine(substring)
      Next
   End Sub
End Module
' The example displays the following output:
'     Thi
'      i
'      a
'     hort
'     tring.

Поскольку параметр separator дополнен атрибутом ParamArrayAttribute, компиляторы будут интерпретировать один символ как одноэлементный массив символов.Because the separator parameter is decorated with the ParamArrayAttribute attribute, compilers will interpret a single character as a single-element character array. Это не так для других перегрузок String.Split, которые включают параметр separator; необходимо явно передать перегрузку массива символов в качестве аргумента separator.This is not the case for other String.Split overloads that include a separator parameter; you must explicitly pass these overloads a character array as the separator argument.

Сведения о сравненииComparison details

Метод Split(Char[]) извлекает подстроки из этой строки, разделенные одним или несколькими символами в массиве separator, и возвращает эти подстроки как элементы массива.The Split(Char[]) method extracts the substrings in this string that are delimited by one or more of the characters in the separator array, and returns those substrings as elements of an array.

Метод Split(Char[]) ищет разделители, выполняя сравнения с использованием правил сортировки порядковых номеров с учетом регистра.The Split(Char[]) method looks for delimiters by performing comparisons using case-sensitive ordinal sort rules. Дополнительные сведения о сортировке по словам, строкам и порядковым номерам см. в разделе Перечисление System.Globalization.CompareOptions.For more information about word, string, and ordinal sorts, see the System.Globalization.CompareOptions enumeration.

Особенности производительностиPerformance Considerations

Методы Split выделяют память для возвращаемого объекта массива и объект String для каждого элемента массива.The Split methods allocate memory for the returned array object and a String object for each array element. Если для приложения требуется оптимальная производительность или управление выделением памяти является критически важным в приложении, рассмотрите возможность использования метода IndexOf или IndexOfAny.If your application requires optimal performance or if managing memory allocation is critical in your application, consider using the IndexOf or IndexOfAny method. Кроме того, можно использовать метод Compare для нахождение подстроки в строке.You also have the option of using the Compare method to locate a substring within a string.

Чтобы разделить строку с помощью символа разделителя, используйте метод IndexOf или IndexOfAny для нахождение символа разделителя в строке.To split a string at a separator character, use the IndexOf or IndexOfAny method to locate a separator character in the string. Чтобы разделить строку в строке-разделителе, используйте метод IndexOf или IndexOfAny для нахождение первого символа строки разделителя.To split a string at a separator string, use the IndexOf or IndexOfAny method to locate the first character of the separator string. Затем используйте метод Compare, чтобы определить, равны ли символы, указанные после первого символа, оставшимся символам строки разделителя.Then use the Compare method to determine whether the characters after that first character are equal to the remaining characters of the separator string.

Кроме того, если для разделения строк в нескольких вызовах методов Split используется один и тот же набор символов, рассмотрите возможность создания одного массива и ссылки на него в каждом вызове метода.In addition, if the same set of characters is used to split strings in multiple Split method calls, consider creating a single array and referencing it in each method call. Это значительно сокращает дополнительную нагрузку на каждый вызов метода.This significantly reduces the additional overhead of each method call.

Примечания для тех, кто вызывает этот метод

В .NET Framework 3,5.NET Framework 3.5 и более ранних версиях, если метод Split(Char[]) передается separator, который имеет значение null или не содержит символов, метод использует слегка отличающийся набор символов, чтобы разделить строку, чем метод Trim(Char[]), чтобы обрезать строку.In the .NET Framework 3,5.NET Framework 3.5 and earlier versions, if the Split(Char[]) method is passed a separator that is null or contains no characters, the method uses a slightly different set of characters to split the string than the Trim(Char[]) method does to trim the string. Начиная с .NET Framework 4, оба метода используют идентичный набор пробельных символов Юникода.Starting with the .NET Framework 4, both methods use an identical set of Unicode white-space characters.

Дополнительно

Применяется к