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 specified delimiting characters and, optionally, options.

Split(Char, Int32, StringSplitOptions)

Разбивает строку на максимальное число подстрок на основе указанного символа-разделителя и, при необходимости, параметров.Splits a string into a maximum number of substrings based on a specified delimiting character and, optionally, options. Разбивает строку на максимальное число подстрок на основе указанного разделителя символов, при необходимости исключая пустые подстроки из результата.Splits a string into a maximum number of substrings based on the provided character separator, optionally omitting empty substrings from the result.

Split(String[], Int32, StringSplitOptions)

Разбивает строку на максимальное число подстрок на основе указанных строк-разделителей и, при необходимости, параметров.Splits a string into a maximum number of substrings based on specified delimiting strings and, optionally, options.

Split(String[], StringSplitOptions)

Разбивает строку на подстроки на основе указанных строк-разделителей и, при необходимости, параметров.Splits a string into substrings based on a specified delimiting string and, optionally, options.

Split(String, Int32, StringSplitOptions)

Разбивает строку на максимальное число подстрок на основе указанной строки-разделителя и, при необходимости, параметров.Splits a string into a maximum number of substrings based on a specified delimiting string and, optionally, options.

Split(Char[], StringSplitOptions)

Разбивает строку на подстроки на основе указанных символов-разделителей и параметров.Splits a string into substrings based on specified delimiting characters and options.

Split(Char[], Int32)

Разбивает строку на максимальное число подстрок на основе указанных символов-разделителей.Splits a string into a maximum number of substrings based on specified delimiting characters.

Split(Char, StringSplitOptions)

Разбивает строку на подстроки на основе указанного символа-разделителя и, при необходимости, параметров.Splits a string into substrings based on a specified delimiting character and, optionally, options.

Split(String, StringSplitOptions)

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

Split(Char[])

Разбивает строку на подстроки на основе указанных символов-разделителей.Splits a string into substrings based on specified delimiting characters.

Комментарии

Split используется для разбиения строки с разделителями на подстроки.Split is used to break a delimited string into substrings. Можно использовать либо массив символов, либо массив строк, чтобы указать ноль или несколько символов или строк.You can use either a character array or a string array to specify zero or more delimiting characters or strings. Если символы-разделители не указаны, строка разбивается по символам пробела.If no delimiting characters are specified, the string is split at white-space characters.

Перегрузки 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 specify whether to include empty strings and/or trim substrings in the result (the Split(Char[], StringSplitOptions) and Split(String[], StringSplitOptions) methods), or to do both (the Split(Char[], Int32, StringSplitOptions) and Split(String[], Int32, StringSplitOptions) methods).

Совет

SplitМетод не всегда является лучшим способом разбивать строку с разделителями на подстроки.The Split method is not always the best way to break a delimited string into substrings. Если вы не хотите извлекать все подстроки из строки с разделителями или хотите проанализировать строку на основе шаблона вместо набора символов-разделителей, рассмотрите возможность использования регулярных выражений или объедините один из методов поиска, который возвращает индекс символа с помощью Substring метода.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 using regular expressions, or combine one of the search methods that returns the index of a character with the Substring method. Дополнительные сведения см. в разделе Извлечение подстрок из строки.For more information, see Extract substrings from a string.

ПримерExample

Ниже показаны три различные перегрузки String.Split().The following examples show three different overloads of String.Split(). Первый пример вызывает Split(Char[]) перегрузку и передается в один разделитель.The first example calls the Split(Char[]) overload and passes in a single delimiter.

string s = "You win some. You lose some.";

string[] subs = s.Split(' ');

foreach (var sub in subs)
{
    Console.WriteLine($"Substring: {sub}");
}

// This example produces the following output:
//
// Substring: You
// Substring: win
// Substring: some.
// Substring: You
// Substring: lose
// Substring: some.
Dim s As String = "You win some. You lose some."
Dim subs As String() = s.Split()

For Each substring As String In subs
    Console.WriteLine($"Substring: {substring}")
Next

' This example produces the following output:
'
' Substring: You
' Substring: win
' Substring: some.
' Substring: You
' Substring: lose
' Substring: some.

Как видите, символы-точки (.) содержатся в двух подстроках.As you can see, the period characters (.) are included in two of the substrings. Если вы хотите исключить символы-точки, добавьте символ-точку как дополнительный символ разделителя.If you want to exclude the period characters, you can add the period character as an additional delimiting character. В следующем примере показано, как это сделать.The next example shows how to do this.

string s = "You win some. You lose some.";

string[] subs = s.Split(' ', '.');

foreach (var sub in subs)
{
    Console.WriteLine($"Substring: {sub}");
}

// This example produces the following output:
//
// Substring: You
// Substring: win
// Substring: some
// Substring:
// Substring: You
// Substring: lose
// Substring: some
// Substring:
Dim s As String = "You win some. You lose some."
Dim subs As String() = s.Split(" "c, "."c)

For Each substring As String In subs
    Console.WriteLine($"Substring: {substring}")
Next

' This example produces the following output:
'
' Substring: You
' Substring: win
' Substring: some
' Substring:
' Substring: You
' Substring: lose
' Substring: some
' Substring:

Точки исчезли из подстрок, однако теперь появились две дополнительные пустые подстроки.The periods are gone from the substrings, but now two extra empty substrings have been included. Эти пустые подстроки представляют подстроку между словом и периодом после него.These empty substring represent the substring between a word and the period that follows it. Чтобы исключить из результирующего массива пустые подстроки, вызовите перегрузку Split(Char[], StringSplitOptions) и укажите StringSplitOptions.RemoveEmptyEntries для параметра options.To omit empty substrings from the resulting array, you can call the Split(Char[], StringSplitOptions) overload and specify StringSplitOptions.RemoveEmptyEntries for the options parameter.

string s = "You win some. You lose some.";
char[] separators = new char[] { ' ', '.' };

string[] subs = s.Split(separators, StringSplitOptions.RemoveEmptyEntries);

foreach (var sub in subs)
{
    Console.WriteLine($"Substring: {sub}");
}

// This example produces the following output:
//
// Substring: You
// Substring: win
// Substring: some
// Substring: You
// Substring: lose
// Substring: some
Dim s As String = "You win some. You lose some."
Dim separators As Char() = New Char() {" "c, "."c}
Dim subs As String() = s.Split(separators, StringSplitOptions.RemoveEmptyEntries)

For Each substring As String In subs
    Console.WriteLine($"Substring: {substring}")
Next

' This example produces the following output:
'
' Substring: You
' Substring: win
' Substring: some
' Substring: You
' Substring: lose
' Substring: some

В разделах для отдельных перегрузок String.Split() содержатся дополнительные примеры.The sections for the individual overloads of String.Split() contain further examples.

Split(Char[], Int32, StringSplitOptions)

Разбивает строку на максимальное число подстрок на основе указанных символов-разделителей и, при необходимости, параметров.Splits a string into a maximum number of substrings based on specified delimiting characters and, optionally, options.

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

Параметры

separator
Char[]

Массив символов, разделяющих подстроки в данной строке, пустой массив, не содержащий разделителей, или null.An array of characters that delimit 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

Побитовое сочетание значений перечисления, которое указывает, следует ли обрезать подстроки и включать пустые подстроки.A bitwise combination of the enumeration values that specifies whether to trim substrings and include empty substrings.

Возвращаемое значение

String[]

Массив, содержащий подстроки данной строки, разделенные одним или несколькими символами из separator.An array that contains 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.Split() 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 \"{s1}\".");
Console.WriteLine($"The delimiter character is '{charSeparators[0]}'.\n");

// 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 \"{s2}\".");
Console.WriteLine($"The delimiter string is \"{stringSeparators[0]}\".\n");

// 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 {entries.Length} elements:");
    foreach (string entry in entries)
    {
        Console.Write($"<{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]>

*/
    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

'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. Символы пробела определяются стандартом Юникода, а Char.IsWhiteSpace метод возвращает, true если они передаются в него.White-space characters are defined by the Unicode standard and the Char.IsWhiteSpace method returns true if they are passed to it.

Для передачи null char[] separator параметра необходимо указать тип null для устранения неоднозначности вызова из других перегрузок, таких как Split(String[], Int32, StringSplitOptions) .To pass null for the char[] separator parameter, you must indicate the type of the null to disambiguate the call from some other overloads, such as Split(String[], Int32, StringSplitOptions). В следующем примере показано несколько способов однозначного определения этой перегрузки.The following example shows several ways to unambiguously identify this overload.

string phrase = "The quick  brown fox";

_ = phrase.Split(default(char[]), 3, StringSplitOptions.RemoveEmptyEntries);

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

_ = 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 в этом экземпляре больше подстрок, то первый минус 1 count подстрока возвращается в первые 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 и более ранних версиях, если Split(Char[]) методу передается значение separator , равное null или не содержащее символов, метод использует немного другой набор символов пробела, чтобы разделить строку, чем Trim(Char[]) метод, чтобы обрезать строку.In .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 white-space characters to split the string than the Trim(Char[]) method does to trim the string. Начиная с платформа .NET Framework 4, оба метода используют идентичный набор пробельных символов Юникода.Starting with .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 of substrings based on a specified delimiting character and, optionally, options. Разбивает строку на максимальное число подстрок на основе указанного разделителя символов, при необходимости исключая пустые подстроки из результата.Splits a string into a maximum number of substrings based on the provided character separator, optionally omitting empty substrings from the result.

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

Побитовое сочетание значений перечисления, которое указывает, следует ли обрезать подстроки и включать пустые подстроки.A bitwise combination of the enumeration values that specifies whether to trim substrings and include empty substrings.

Возвращаемое значение

String[]

Массив, содержащий подстроки из этого экземпляра (не более count), разделенные символом separator.An array that contains 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 specified delimiting strings and, optionally, options.

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

Параметры

separator
String[]

Строки, разделяющие подстроки в данной строке, пустой массив, не содержащий разделителей, или null.The strings that delimit 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

Побитовое сочетание значений перечисления, которое указывает, следует ли обрезать подстроки и включать пустые подстроки.A bitwise combination of the enumeration values that specifies whether to trim substrings and include empty substrings.

Возвращаемое значение

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.Split() 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 \"{s1}\".");
Console.WriteLine($"The delimiter character is '{charSeparators[0]}'.\n");

// 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 \"{s2}\".");
Console.WriteLine($"The delimiter string is \"{stringSeparators[0]}\".\n");

// 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 {entries.Length} elements:");
    foreach (string entry in entries)
    {
        Console.Write($"<{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]>

*/
    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

'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 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. Символы пробела определяются стандартом Юникода, а Char.IsWhiteSpace метод возвращает, true если они передаются в него.White-space characters are defined by the Unicode standard and the Char.IsWhiteSpace method returns true if they are passed to it.

Для передачи null string[] separator параметра необходимо указать тип null для устранения неоднозначности вызова из других перегрузок, таких как Split(Char[], Int32, StringSplitOptions) .To pass null for the string[] separator parameter, you must indicate the type of the null to disambiguate the call from some other overloads, such as Split(Char[], Int32, StringSplitOptions). В следующем примере показано несколько способов однозначного определения этой перегрузки.The following example shows several ways to unambiguously identify this overload.

string phrase = "The quick  brown fox";

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

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

_ = 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 в этом экземпляре больше подстрок, то первый минус 1 count подстрока возвращается в первые 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 и более ранних версиях, если Split(Char[]) методу передается значение separator , равное null или не содержащее символов, метод использует немного другой набор символов пробела, чтобы разделить строку, чем Trim(Char[]) метод, чтобы обрезать строку.In .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 white-space characters to split the string than the Trim(Char[]) method does to trim the string. Начиная с платформа .NET Framework 4, оба метода используют идентичный набор пробельных символов Юникода.Starting with .NET Framework 4, both methods use an identical set of Unicode white-space characters.

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

Split(String[], StringSplitOptions)

Разбивает строку на подстроки на основе указанных строк-разделителей и, при необходимости, параметров.Splits a string into substrings based on a specified delimiting string and, optionally, options.

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

Параметры

separator
String[]

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

options
StringSplitOptions

Побитовое сочетание значений перечисления, которое указывает, следует ли обрезать подстроки и включать пустые подстроки.A bitwise combination of the enumeration values that specifies whether to trim substrings and include empty substrings.

Возвращаемое значение

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   \"{source}\".");
Console.WriteLine();
Console.WriteLine($"Using the delimiter string:\n   \"{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 ({result.Length} elements):");
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 ({result.Length} elements):");
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'
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()

' 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
    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

' 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.

Строки разделителей не включаются в элементы возвращаемого массива.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- _ ", а значение options аргумента — None , метод возвращает массив строк со следующими пятью элементами: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 "-" 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 non-empty strings, white-space characters are assumed to be the delimiters. Символы пробела определяются стандартом Юникода, а Char.IsWhiteSpace метод возвращает, true если они передаются в него.White-space characters are defined by the Unicode standard and the Char.IsWhiteSpace method returns true if they are passed to it.

Для передачи null string[] separator параметра необходимо указать тип null для устранения неоднозначности вызова из других перегрузок, таких как Split(Char[], StringSplitOptions) .To pass null for the string[] separator parameter, you must indicate the type of the null to disambiguate the call from some other overloads, such as Split(Char[], StringSplitOptions). В следующем примере показано несколько способов однозначного определения этой перегрузки.The following example shows several ways to unambiguously identify this overload.

string phrase = "The quick  brown fox";

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

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

_ = 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 и более ранних версиях, если Split(Char[]) методу передается значение separator , равное null или не содержащее символов, метод использует немного другой набор символов пробела, чтобы разделить строку, чем Trim(Char[]) метод, чтобы обрезать строку.In .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 white-space characters to split the string than the Trim(Char[]) method does to trim the string. Начиная с платформа .NET Framework 4, оба метода используют идентичный набор пробельных символов Юникода.Starting with .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 a specified delimiting string and, optionally, options.

public string[] Split (string? separator, int count, StringSplitOptions options = System.StringSplitOptions.None);
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

Побитовое сочетание значений перечисления, которое указывает, следует ли обрезать подстроки и включать пустые подстроки.A bitwise combination of the enumeration values that specifies whether to trim substrings and include empty substrings.

Возвращаемое значение

String[]

Массив, содержащий подстроки из этого экземпляра (не более count), разделенные символом separator.An array that contains 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 specified delimiting characters and options.

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

Параметры

separator
Char[]

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

options
StringSplitOptions

Побитовое сочетание значений перечисления, которое указывает, следует ли обрезать подстроки и включать пустые подстроки.A bitwise combination of the enumeration values that specifies whether to trim substrings and include empty substrings.

Возвращаемое значение

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.Split() 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 \"{s1}\".");
Console.WriteLine($"The delimiter character is '{charSeparators[0]}'.\n");

// 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 \"{s2}\".");
Console.WriteLine($"The delimiter string is \"{stringSeparators[0]}\".\n");

// 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 {entries.Length} elements:");
    foreach (string entry in entries)
    {
        Console.Write($"<{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]>

*/
    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

'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]>
'

Комментарии

Символы-разделители (символы в 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- _ ", а значение options аргумента — None , метод возвращает массив строк со следующими пятью элементами: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. Символы пробела определяются стандартом Юникода, а Char.IsWhiteSpace метод возвращает, true если они передаются в него.White-space characters are defined by the Unicode standard and the Char.IsWhiteSpace method returns true if they are passed to it.

Для передачи null char[] separator параметра необходимо указать тип null для устранения неоднозначности вызова из других перегрузок, таких как Split(String[], StringSplitOptions) .To pass null for the char[] separator parameter, you must indicate the type of the null to disambiguate the call from some other overloads, such as Split(String[], StringSplitOptions). В следующем примере показано несколько способов однозначного определения этой перегрузки.The following example shows several ways to unambiguously identify this overload.

string phrase = "The quick  brown fox";

_ = phrase.Split(default(char[]), StringSplitOptions.RemoveEmptyEntries);

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

_ = 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 и более ранних версиях, если Split(Char[]) методу передается значение separator , равное null или не содержащее символов, метод использует немного другой набор символов пробела, чтобы разделить строку, чем Trim(Char[]) метод, чтобы обрезать строку.In .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 white-space characters to split the string than the Trim(Char[]) method does to trim the string. Начиная с платформа .NET Framework 4, оба метода используют идентичный набор пробельных символов Юникода.Starting with .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 specified delimiting characters.

public:
 cli::array <System::String ^> ^ Split(cli::array <char> ^ separator, int count);
public string[] Split (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.An array of characters that delimit 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 can be used to limit the number of strings returned by Split.

string name = "Alex Johnson III";

string[] subs = name.Split(null, 2);

string firstName = subs[0];
string lastName;
if (subs.Length > 1)
{
    lastName = subs[1];
}

// firstName = "Alex"
// lastName = "Johnson III"
Console.WriteLine("What is your name?")
Dim name As String = Console.ReadLine()

Dim substrings = name.Split(Nothing, 2)
Dim firstName As String = substrings(0)
Dim lastName As String

If substrings.Length > 1 Then
    lastName = substrings(1)
End If

' If the user enters "Alex Johnson III":
' firstName = "Alex"
' lastName = "Johnson III"

Комментарии

Символы разделителей не включаются в элементы возвращаемого массива.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. Символы пробела определяются стандартом Юникода, а Char.IsWhiteSpace метод возвращает, true если они передаются в него.White-space characters are defined by the Unicode standard and the Char.IsWhiteSpace method returns true if they are passed to it.

Каждый элемент 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 - 1 substrings are returned in the first count - 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 shows some examples.

ЯзыкLanguage Строковое значениеString value SeparatorSeparator Возвращаемый массивReturned array
C#C# "42, 12, 19""42, 12, 19" New char [] {', ', ' '}new Char[] {',', ' '} {"42", "", "12", "", "19"}{"42", "", "12", "", "19"}
Visual BasicVisual Basic "42, 12, 19""42, 12, 19" Char () = {"," c, "" c})Char() = {","c, " "c}) {"42", "", "12", "", "19"}{"42", "", "12", "", "19"}
C#C# "42.. 12.. 19"."42..12..19." New char [] {'. '}new Char[] {'.'} {"42", "", "12", "", "19", ""}{"42", "", "12", "", "19", ""}
Visual BasicVisual Basic "42.. 12.. 19"."42..12..19." Char () = {"." цChar() = {"."c} {"42", "", "12", "", "19", ""}{"42", "", "12", "", "19", ""}
C#C# Банан"Banana" New char [] {'. '}new Char[] {'.'} {"Полукруглое"}{"Banana"}
Visual BasicVisual Basic Банан"Banana" Char () = {"." цChar() = {"."c} {"Полукруглое"}{"Banana"}
C#C# "Дарб\нсмарба""Darb\nSmarba" New char [] {}new Char[] {} {"Дарб", "Смарба"}{"Darb", "Smarba"}
Visual BasicVisual Basic "Дарб" & Вблф & "Смарба""Darb" & vbLf & "Smarba" Char () = {}Char() = {} {"Дарб", "Смарба"}{"Darb", "Smarba"}
C#C# "Дарб\нсмарба""Darb\nSmarba" nullnull {"Дарб", "Смарба"}{"Darb", "Smarba"}
Visual BasicVisual Basic "Дарб" & Вблф & "Смарба""Darb" & vbLf & "Smarba" NothingNothing {"Дарб", "Смарба"}{"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 и более ранних версиях, если Split(Char[]) методу передается значение separator , равное null или не содержащее символов, метод использует немного другой набор символов пробела, чтобы разделить строку, чем Trim(Char[]) метод, чтобы обрезать строку.In .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 white-space characters to split the string than the Trim(Char[]) method does to trim the string. Начиная с платформа .NET Framework 4, оба метода используют идентичный набор пробельных символов Юникода.Starting with .NET Framework 4, both methods use an identical set of Unicode white-space characters.

См. также раздел

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

Split(Char, StringSplitOptions)

Разбивает строку на подстроки на основе указанного символа-разделителя и, при необходимости, параметров.Splits a string into substrings based on a specified delimiting character and, optionally, options.

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

Побитовое сочетание значений перечисления, которое указывает, следует ли обрезать подстроки и включать пустые подстроки.A bitwise combination of the enumeration values that specifies whether to trim substrings and include empty substrings.

Возвращаемое значение

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);
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

Побитовое сочетание значений перечисления, которое указывает, следует ли обрезать подстроки и включать пустые подстроки.A bitwise combination of the enumeration values that specifies whether to trim substrings and include empty substrings.

Возвращаемое значение

String[]

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

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

Split(Char[])

Разбивает строку на подстроки на основе указанных символов-разделителей.Splits a string into substrings based on specified delimiting characters.

public:
 cli::array <System::String ^> ^ Split(... cli::array <char> ^ separator);
public string[] Split (params 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.An array of delimiting characters, 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.

Примеры

В следующем примере показано, как извлечь отдельные слова из блока текста, рассматривая символ пробела ( ) и символ табуляции ( \t ) в качестве разделителей.The following example demonstrates how to extract individual words from a block of text by treating the space character ( ) and tab character (\t) as delimiters. Разделенная строка включает оба этих символа.The string being split includes both of these characters.

string s = "Today\tI'm going to school";
string[] subs = s.Split(' ', '\t');

foreach (var sub in subs)
{
    Console.WriteLine($"Substring: {sub}");
}

// This example produces the following output:
//
// Substring: Today
// Substring: I'm
// Substring: going
// Substring: to
// Substring: school
Dim s As String = "Today" & vbTab & "I'm going to school"
Dim subs As String() = s.Split(" "c, Char.Parse(vbTab))

For Each substring In subs
    Console.WriteLine("Substring: " & substring)
Next

' This example produces the following output:
'
' Substring: Today
' Substring: I 'm
' Substring: going
' Substring: to
' Substring: school

Комментарии

Если строка отделяется от известного набора символов, можно использовать 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.

Символы разделителей не включаются в элементы возвращаемого массива.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.

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

ЯзыкLanguage Строковое значениеString value SeparatorSeparator Возвращаемый массивReturned array
C#C# "42, 12, 19""42, 12, 19" New char [] {', ', ' '}new Char[] {',', ' '} {"42", "", "12", "", "19"}{"42", "", "12", "", "19"}
Visual BasicVisual Basic "42, 12, 19""42, 12, 19" Char () = {"," c, "" c})Char() = {","c, " "c}) {"42", "", "12", "", "19"}{"42", "", "12", "", "19"}
C#C# "42.. 12.. 19"."42..12..19." New char [] {'. '}new Char[] {'.'} {"42", "", "12", "", "19", ""}{"42", "", "12", "", "19", ""}
Visual BasicVisual Basic "42.. 12.. 19"."42..12..19." Char () = {"." цChar() = {"."c} {"42", "", "12", "", "19", ""}{"42", "", "12", "", "19", ""}
C#C# Банан"Banana" New char [] {'. '}new Char[] {'.'} {"Полукруглое"}{"Banana"}
Visual BasicVisual Basic Банан"Banana" Char () = {"." цChar() = {"."c} {"Полукруглое"}{"Banana"}
C#C# "Дарб\нсмарба""Darb\nSmarba" New char [] {}new Char[] {} {"Дарб", "Смарба"}{"Darb", "Smarba"}
Visual BasicVisual Basic "Дарб" & Вблф & "Смарба""Darb" & vbLf & "Smarba" Char () = {}Char() = {} {"Дарб", "Смарба"}{"Darb", "Smarba"}
C#C# "Дарб\нсмарба""Darb\nSmarba" nullnull {"Дарб", "Смарба"}{"Darb", "Smarba"}
Visual BasicVisual Basic "Дарб" & Вблф & "Смарба""Darb" & vbLf & "Smarba" NothingNothing {"Дарб", "Смарба"}{"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, а Char.IsWhiteSpace метод возвращает, true Если в него передается символ пробела.White-space characters are defined by the Unicode standard, and the Char.IsWhiteSpace method returns true if a white-space character is passed to it.

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.
    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

' 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 и более ранних версиях, если Split(Char[]) методу передается значение separator , равное null или не содержащее символов, метод использует немного другой набор символов пробела, чтобы разделить строку, чем Trim(Char[]) метод, чтобы обрезать строку.In .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 white-space characters to split the string than the Trim(Char[]) method does to trim the string. Начиная с платформа .NET Framework 4, оба метода используют идентичный набор пробельных символов Юникода.Starting with .NET Framework 4, both methods use an identical set of Unicode white-space characters.

См. также раздел

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