String.Split Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zwraca tablicę ciągów zawierającą podciągi w tym wystąpieniu rozdzielane elementami określonego ciągu lub tablicy znaków Unicode.
Przeciążenia
Split(String, Int32, StringSplitOptions) |
Dzieli ciąg na maksymalną liczbę podciągów na podstawie określonego ogranicznika i opcjonalnie opcji. |
Split(Char[], Int32, StringSplitOptions) |
Dzieli ciąg na maksymalną liczbę podciągów na podstawie określonych znaków ograniczników i opcjonalnie opcji. |
Split(Char, Int32, StringSplitOptions) |
Dzieli ciąg na maksymalną liczbę podciągów na podstawie określonego ogranicznika i opcjonalnie opcji. Dzieli ciąg na maksymalną liczbę podciągów na podstawie podanego separatora znaków, opcjonalnie pomijając puste podciągnięcia z wyniku. |
Split(String[], StringSplitOptions) |
Dzieli ciąg na podciągi na podstawie określonego ciągu ogranicznika i, opcjonalnie, opcji. |
Split(String, StringSplitOptions) |
Dzieli ciąg na podciągy, które są oparte na podanym separatorze ciągów. |
Split(Char[]) |
Dzieli ciąg na podciągi na podstawie określonych znaków ograniczników. |
Split(Char[], Int32) |
Dzieli ciąg na maksymalną liczbę podciągów na podstawie określonych znaków ograniczników. |
Split(Char, StringSplitOptions) |
Dzieli ciąg na podciągi na podstawie określonego znaku ogranicznika i, opcjonalnie, opcji. |
Split(ReadOnlySpan<Char>) |
Dzieli ciąg na podciągi na podstawie określonych znaków ograniczników. |
Split(String[], Int32, StringSplitOptions) |
Dzieli ciąg na maksymalną liczbę podciągów na podstawie określonych ciągów ograniczników i opcjonalnie opcji. |
Split(Char[], StringSplitOptions) |
Dzieli ciąg na podciągi na podstawie określonych ograniczeń i opcji. |
Uwagi
Split służy do dzielenia rozdzielanego ciągu na podciągi. Można użyć tablicy znaków lub tablicy ciągów, aby określić zero lub więcej znaków ograniczników lub ciągów. Jeśli nie określono żadnych znaków ograniczników, ciąg jest podzielony na znaki odstępu.
Przeciążenia metody Split pozwalają ograniczyć liczbę podciągów zwracanych przez metodę (metoda Split(Char[], Int32)), aby określić, czy mają być uwzględniane puste ciągi i/lub przycinanie podciągów w wyniku (metody Split(Char[], StringSplitOptions) i Split(String[], StringSplitOptions)), czy też do wykonania obu (metody Split(Char[], Int32, StringSplitOptions) i Split(String[], Int32, StringSplitOptions)).
Napiwek
Metoda Split nie zawsze jest najlepszym sposobem podziału rozdzielanego ciągu na podciągi. Jeśli nie chcesz wyodrębniać wszystkich podciągów rozdzielanego ciągu lub jeśli chcesz przeanalizować ciąg na podstawie wzorca zamiast zestawu znaków ograniczników, rozważ użycie wyrażeń regularnych lub połączenie jednej z metod wyszukiwania zwracających indeks znaku z metodą Substring. Aby uzyskać więcej informacji, zobacz Wyodrębnianie podciągów z ciągu.
Przykład
W poniższych przykładach przedstawiono trzy różne przeciążenia String.Split()
. Pierwszy przykład wywołuje przeciążenie Split(Char[]) i przechodzi w jednym ograniczniku.
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.
let s = "You win some. You lose some."
let subs = s.Split ' '
for sub in subs do
printfn $"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.
Jak widać, znaki kropki (.
) są uwzględnione w dwóch podciągach. Jeśli chcesz wykluczyć znaki kropki, możesz dodać znak kropki jako dodatkowy znak ogranicznika. W następnym przykładzie pokazano, jak to zrobić.
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:
let s = "You win some. You lose some."
let subs = s.Split(' ', '.')
for sub in subs do
printfn $"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:
Okresy pochodzą z podciągów, ale teraz zostały uwzględnione dwa dodatkowe puste podciągy. Te puste podciągy reprezentują podciąg między wyrazem a kropką, która następuje po nim. Aby pominąć puste podciągnięcia z wynikowej tablicy, można wywołać przeciążenie Split(Char[], StringSplitOptions) i określić StringSplitOptions.RemoveEmptyEntries dla parametru options
.
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
let s = "You win some. You lose some."
let separators = [| ' '; '.' |]
let subs = s.Split(separators, StringSplitOptions.RemoveEmptyEntries)
for sub in subs do
printfn $"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
Sekcje dotyczące poszczególnych przeciążeń String.Split()
zawierają dalsze przykłady.
Split(String, Int32, StringSplitOptions)
- Źródło:
- String.Manipulation.cs
- Źródło:
- String.Manipulation.cs
- Źródło:
- String.Manipulation.cs
Dzieli ciąg na maksymalną liczbę podciągów na podstawie określonego ogranicznika i opcjonalnie opcji.
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()
Parametry
- separator
- String
Ciąg, który rozdziela podciągi w tym wystąpieniu.
- count
- Int32
Maksymalna liczba elementów oczekiwana w tablicy.
- options
- StringSplitOptions
Bitowa kombinacja wartości wyliczenia, która określa, czy przycinać podciągy i uwzględniać puste podciągy.
Zwraca
Tablica zawierająca co najwyżej count
podciągi z tego wystąpienia, które są rozdzielane przez separator
.
Uwagi
Jeśli ciąg został już podzielony count
— 1 razy, ale koniec ciągu nie został osiągnięty, ostatni ciąg w zwróconej tablicy będzie zawierać pozostałe końcowe podciąg tego wystąpienia, nietknięte.
Dotyczy
Split(Char[], Int32, StringSplitOptions)
- Źródło:
- String.Manipulation.cs
- Źródło:
- String.Manipulation.cs
- Źródło:
- String.Manipulation.cs
Dzieli ciąg na maksymalną liczbę podciągów na podstawie określonych znaków ograniczników i opcjonalnie opcji.
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()
Parametry
- separator
- Char[]
Tablica znaków rozdzielających podciągi w tym ciągu, pustą tablicę, która nie zawiera ograniczników lub null
.
- count
- Int32
Maksymalna liczba podciągów do zwrócenia.
- options
- StringSplitOptions
Bitowa kombinacja wartości wyliczenia, która określa, czy przycinać podciągy i uwzględniać puste podciągy.
Zwraca
Tablica zawierająca podciągi w tym ciągu rozdzielane co najmniej jednym znakiem w separator
. Aby uzyskać więcej informacji, zobacz sekcję Uwagi.
- Atrybuty
Wyjątki
count
jest ujemna.
options
nie jest jedną z wartości StringSplitOptions.
Przykłady
W poniższym przykładzie użyto wyliczenia StringSplitOptions do uwzględnienia lub wykluczenia podciągów wygenerowanych przez metodę Split.
// 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.
// Example 1: Split a string delimited by characters
Console.WriteLine("1) Split a string delimited by characters:\n");
string s1 = ",ONE,, TWO,, , THREE,,";
char[] charSeparators = new char[] { ',' };
string[] result;
Console.WriteLine($"The original string is: \"{s1}\".");
Console.WriteLine($"The delimiter character is: '{charSeparators[0]}'.\n");
// Split the string and return all elements
Console.WriteLine("1a) Return all elements:");
result = s1.Split(charSeparators, StringSplitOptions.None);
Show(result);
// Split the string and return all elements with whitespace trimmed
Console.WriteLine("1b) Return all elements with whitespace trimmed:");
result = s1.Split(charSeparators, StringSplitOptions.TrimEntries);
Show(result);
// Split the string and return all non-empty elements
Console.WriteLine("1c) Return all non-empty elements:");
result = s1.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries);
Show(result);
// Split the string and return all non-whitespace elements with whitespace trimmed
Console.WriteLine("1d) Return all non-whitespace elements with whitespace trimmed:");
result = s1.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
Show(result);
// Split the string into only two elements, keeping the remainder in the last match
Console.WriteLine("1e) Split into only two elements:");
result = s1.Split(charSeparators, 2, StringSplitOptions.None);
Show(result);
// Split the string into only two elements with whitespace trimmed, keeping the remainder in the last match
Console.WriteLine("1f) Split into only two elements with whitespace trimmed:");
result = s1.Split(charSeparators, 2, StringSplitOptions.TrimEntries);
Show(result);
// Split the string into only two non-empty elements, keeping the remainder in the last match
Console.WriteLine("1g) Split into only two non-empty elements:");
result = s1.Split(charSeparators, 2, StringSplitOptions.RemoveEmptyEntries);
Show(result);
// Split the string into only two non-whitespace elements with whitespace trimmed, keeping the remainder in the last match
Console.WriteLine("1h) Split into only two non-whitespace elements with whitespace trimmed:");
result = s1.Split(charSeparators, 2, StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
Show(result);
// Example 2: Split a string delimited by another string
Console.WriteLine("2) Split a string delimited by another string:\n");
string s2 = "[stop]" +
"ONE[stop] [stop]" +
"TWO [stop][stop] [stop]" +
"THREE[stop][stop] ";
string[] stringSeparators = new string[] { "[stop]" };
Console.WriteLine($"The original string is: \"{s2}\".");
Console.WriteLine($"The delimiter string is: \"{stringSeparators[0]}\".\n");
// Split the string and return all elements
Console.WriteLine("2a) Return all elements:");
result = s2.Split(stringSeparators, StringSplitOptions.None);
Show(result);
// Split the string and return all elements with whitespace trimmed
Console.WriteLine("2b) Return all elements with whitespace trimmed:");
result = s2.Split(stringSeparators, StringSplitOptions.TrimEntries);
Show(result);
// Split the string and return all non-empty elements
Console.WriteLine("2c) Return all non-empty elements:");
result = s2.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);
Show(result);
// Split the string and return all non-whitespace elements with whitespace trimmed
Console.WriteLine("2d) Return all non-whitespace elements with whitespace trimmed:");
result = s2.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
Show(result);
// Split the string into only two elements, keeping the remainder in the last match
Console.WriteLine("2e) Split into only two elements:");
result = s2.Split(stringSeparators, 2, StringSplitOptions.None);
Show(result);
// Split the string into only two elements with whitespace trimmed, keeping the remainder in the last match
Console.WriteLine("2f) Split into only two elements with whitespace trimmed:");
result = s2.Split(stringSeparators, 2, StringSplitOptions.TrimEntries);
Show(result);
// Split the string into only two non-empty elements, keeping the remainder in the last match
Console.WriteLine("2g) Split into only two non-empty elements:");
result = s2.Split(stringSeparators, 2, StringSplitOptions.RemoveEmptyEntries);
Show(result);
// Split the string into only two non-whitespace elements with whitespace trimmed, keeping the remainder in the last match
Console.WriteLine("2h) Split into only two non-whitespace elements with whitespace trimmed:");
result = s2.Split(stringSeparators, 2, StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
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:
The original string is: ",ONE,, TWO,, , THREE,,".
The delimiter character is: ','.
1a) Return all elements:
The return value contains these 9 elements:
<><ONE><>< TWO><>< >< THREE><><>
1b) Return all elements with whitespace trimmed:
The return value contains these 9 elements:
<><ONE><><TWO><><><THREE><><>
1c) Return all non-empty elements:
The return value contains these 4 elements:
<ONE>< TWO>< >< THREE>
1d) Return all non-whitespace elements with whitespace trimmed:
The return value contains these 3 elements:
<ONE><TWO><THREE>
1e) Split into only two elements:
The return value contains these 2 elements:
<><ONE,, TWO,, , THREE,,>
1f) Split into only two elements with whitespace trimmed:
The return value contains these 2 elements:
<><ONE,, TWO,, , THREE,,>
1g) Split into only two non-empty elements:
The return value contains these 2 elements:
<ONE>< TWO,, , THREE,,>
1h) Split into only two non-whitespace elements with whitespace trimmed:
The return value contains these 2 elements:
<ONE><TWO,, , THREE,,>
2) Split a string delimited by another string:
The original string is: "[stop]ONE[stop] [stop]TWO [stop][stop] [stop]THREE[stop][stop] ".
The delimiter string is: "[stop]".
2a) Return all elements:
The return value contains these 9 elements:
<><ONE>< ><TWO ><>< ><THREE><>< >
2b) Return all elements with whitespace trimmed:
The return value contains these 9 elements:
<><ONE><><TWO><><><THREE><><>
2c) Return all non-empty elements:
The return value contains these 6 elements:
<ONE>< ><TWO >< ><THREE>< >
2d) Return all non-whitespace elements with whitespace trimmed:
The return value contains these 3 elements:
<ONE><TWO><THREE>
2e) Split into only two elements:
The return value contains these 2 elements:
<><ONE[stop] [stop]TWO [stop][stop] [stop]THREE[stop][stop] >
2f) Split into only two elements with whitespace trimmed:
The return value contains these 2 elements:
<><ONE[stop] [stop]TWO [stop][stop] [stop]THREE[stop][stop]>
2g) Split into only two non-empty elements:
The return value contains these 2 elements:
<ONE>< [stop]TWO [stop][stop] [stop]THREE[stop][stop] >
2h) Split into only two non-whitespace elements with whitespace trimmed:
The return value contains these 2 elements:
<ONE><TWO [stop][stop] [stop]THREE[stop][stop]>
*/
// This example demonstrates the String.Split() methods that use
// the StringSplitOptions enumeration.
// Display the array of separated strings using a local function
let show (entries: string[]) =
printfn $"The return value contains these {entries.Length} elements:"
for entry in entries do
printf $"<{entry}>"
printf "\n\n"
// Example 1: Split a string delimited by characters
printfn "1) Split a string delimited by characters:\n"
let s1 = ",ONE,, TWO,, , THREE,,"
let charSeparators = [| ',' |]
printfn $"The original string is: \"{s1}\"."
printfn $"The delimiter character is: '{charSeparators[0]}'.\n"
// Split the string and return all elements
printfn "1a) Return all elements:"
let result = s1.Split(charSeparators, StringSplitOptions.None)
show result
// Split the string and return all elements with whitespace trimmed
printfn "1b) Return all elements with whitespace trimmed:"
let result = s1.Split(charSeparators, StringSplitOptions.TrimEntries)
show result
// Split the string and return all non-empty elements
printfn "1c) Return all non-empty elements:"
let result = s1.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries)
show result
// Split the string and return all non-whitespace elements with whitespace trimmed
printfn "1d) Return all non-whitespace elements with whitespace trimmed:"
let result = s1.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries ||| StringSplitOptions.TrimEntries)
show result
// Split the string into only two elements, keeping the remainder in the last match
printfn "1e) Split into only two elements:"
let result = s1.Split(charSeparators, 2, StringSplitOptions.None)
show result
// Split the string into only two elements with whitespace trimmed, keeping the remainder in the last match
printfn "1f) Split into only two elements with whitespace trimmed:"
let result = s1.Split(charSeparators, 2, StringSplitOptions.TrimEntries)
show result
// Split the string into only two non-empty elements, keeping the remainder in the last match
printfn "1g) Split into only two non-empty elements:"
let result = s1.Split(charSeparators, 2, StringSplitOptions.RemoveEmptyEntries)
show result
// Split the string into only two non-whitespace elements with whitespace trimmed, keeping the remainder in the last match
printfn "1h) Split into only two non-whitespace elements with whitespace trimmed:"
let result = s1.Split(charSeparators, 2, StringSplitOptions.RemoveEmptyEntries ||| StringSplitOptions.TrimEntries)
show result
// Example 2: Split a string delimited by another string
printfn "2) Split a string delimited by another string:\n"
let s2 = "[stop]" +
"ONE[stop] [stop]" +
"TWO [stop][stop] [stop]" +
"THREE[stop][stop] "
let stringSeparators = [| "[stop]" |]
printfn $"The original string is: \"{s2}\"."
printfn $"The delimiter string is: \"{stringSeparators[0]}\".\n"
// Split the string and return all elements
printfn "2a) Return all elements:"
let result = s2.Split(stringSeparators, StringSplitOptions.None)
show result
// Split the string and return all elements with whitespace trimmed
printfn "2b) Return all elements with whitespace trimmed:"
let result = s2.Split(stringSeparators, StringSplitOptions.TrimEntries)
show result
// Split the string and return all non-empty elements
printfn "2c) Return all non-empty elements:"
let result = s2.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries)
show result
// Split the string and return all non-whitespace elements with whitespace trimmed
printfn "2d) Return all non-whitespace elements with whitespace trimmed:"
let result = s2.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries ||| StringSplitOptions.TrimEntries)
show result
// Split the string into only two elements, keeping the remainder in the last match
printfn "2e) Split into only two elements:"
let result = s2.Split(stringSeparators, 2, StringSplitOptions.None)
show result
// Split the string into only two elements with whitespace trimmed, keeping the remainder in the last match
printfn "2f) Split into only two elements with whitespace trimmed:"
let result = s2.Split(stringSeparators, 2, StringSplitOptions.TrimEntries)
show result
// Split the string into only two non-empty elements, keeping the remainder in the last match
printfn "2g) Split into only two non-empty elements:"
let result = s2.Split(stringSeparators, 2, StringSplitOptions.RemoveEmptyEntries)
show result
// Split the string into only two non-whitespace elements with whitespace trimmed, keeping the remainder in the last match
printfn "2h) Split into only two non-whitespace elements with whitespace trimmed:"
let result = s2.Split(stringSeparators, 2, StringSplitOptions.RemoveEmptyEntries ||| StringSplitOptions.TrimEntries)
show result
(*
This example produces the following results:
1) Split a string delimited by characters:
The original string is: ",ONE,, TWO,, , THREE,,".
The delimiter character is: ','.
1a) Return all elements:
The return value contains these 9 elements:
<><ONE><>< TWO><>< >< THREE><><>
1b) Return all elements with whitespace trimmed:
The return value contains these 9 elements:
<><ONE><><TWO><><><THREE><><>
1c) Return all non-empty elements:
The return value contains these 4 elements:
<ONE>< TWO>< >< THREE>
1d) Return all non-whitespace elements with whitespace trimmed:
The return value contains these 3 elements:
<ONE><TWO><THREE>
1e) Split into only two elements:
The return value contains these 2 elements:
<><ONE,, TWO,, , THREE,,>
1f) Split into only two elements with whitespace trimmed:
The return value contains these 2 elements:
<><ONE,, TWO,, , THREE,,>
1g) Split into only two non-empty elements:
The return value contains these 2 elements:
<ONE>< TWO,, , THREE,,>
1h) Split into only two non-whitespace elements with whitespace trimmed:
The return value contains these 2 elements:
<ONE><TWO,, , THREE,,>
2) Split a string delimited by another string:
The original string is: "[stop]ONE[stop] [stop]TWO [stop][stop] [stop]THREE[stop][stop] ".
The delimiter string is: "[stop]".
2a) Return all elements:
The return value contains these 9 elements:
<><ONE>< ><TWO ><>< ><THREE><>< >
2b) Return all elements with whitespace trimmed:
The return value contains these 9 elements:
<><ONE><><TWO><><><THREE><><>
2c) Return all non-empty elements:
The return value contains these 6 elements:
<ONE>< ><TWO >< ><THREE>< >
2d) Return all non-whitespace elements with whitespace trimmed:
The return value contains these 3 elements:
<ONE><TWO><THREE>
2e) Split into only two elements:
The return value contains these 2 elements:
<><ONE[stop] [stop]TWO [stop][stop] [stop]THREE[stop][stop] >
2f) Split into only two elements with whitespace trimmed:
The return value contains these 2 elements:
<><ONE[stop] [stop]TWO [stop][stop] [stop]THREE[stop][stop]>
2g) Split into only two non-empty elements:
The return value contains these 2 elements:
<ONE>< [stop]TWO [stop][stop] [stop]THREE[stop][stop] >
2h) Split into only two non-whitespace elements with whitespace trimmed:
The return value contains these 2 elements:
<ONE><TWO [stop][stop] [stop]THREE[stop][stop]>
*)
Public Shared Sub StringSplitOptionsExamples()
' This example demonstrates the String.Split() methods that use
' the StringSplitOptions enumeration.
' Example 1: Split a string delimited by characters
Console.WriteLine("1) Split a string delimited by characters:" & vbCrLf)
Dim s1 As String = ",ONE,, TWO,, , THREE,,"
Dim charSeparators() As Char = {","c}
Dim result() As String
Console.WriteLine("The original string is: ""{0}"".", s1)
Console.WriteLine("The delimiter character is: '{0}'." & vbCrLf, charSeparators(0))
' Split the string and return all elements
Console.WriteLine("1a) Return all elements:")
result = s1.Split(charSeparators, StringSplitOptions.None)
Show(result)
' Split the string and return all elements with whitespace trimmed
Console.WriteLine("1b) Return all elements with whitespace trimmed:")
result = s1.Split(charSeparators, StringSplitOptions.TrimEntries)
Show(result)
' Split the string and return all non-empty elements
Console.WriteLine("1c) Return all non-empty elements:")
result = s1.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries)
Show(result)
' Split the string and return all non-whitespace elements with whitespace trimmed
Console.WriteLine("1d) Return all non-whitespace elements with whitespace trimmed:")
result = s1.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries Or StringSplitOptions.TrimEntries)
Show(result)
' Split the string into only two elements, keeping the remainder in the last match
Console.WriteLine("1e) Split into only two elements:")
result = s1.Split(charSeparators, 2, StringSplitOptions.None)
Show(result)
' Split the string into only two elements with whitespace trimmed, keeping the remainder in the last match
Console.WriteLine("1f) Split into only two elements with whitespace trimmed:")
result = s1.Split(charSeparators, 2, StringSplitOptions.TrimEntries)
Show(result)
' Split the string into only two non-empty elements, keeping the remainder in the last match
Console.WriteLine("1g) Split into only two non-empty elements:")
result = s1.Split(charSeparators, 2, StringSplitOptions.RemoveEmptyEntries)
Show(result)
' Split the string into only two non-whitespace elements with whitespace trimmed, keeping the remainder in the last match
Console.WriteLine("1h) Split into only two non-whitespace elements with whitespace trimmed:")
result = s1.Split(charSeparators, 2, StringSplitOptions.RemoveEmptyEntries Or StringSplitOptions.TrimEntries)
Show(result)
' Example 2: Split a string delimited by another string
Console.WriteLine("2) Split a string delimited by another string:" & vbCrLf)
Dim s2 As String = "[stop]" +
"ONE[stop] [stop]" +
"TWO [stop][stop] [stop]" +
"THREE[stop][stop] "
Dim stringSeparators() As String = {"[stop]"}
Console.WriteLine("The original string is: ""{0}"".", s2)
Console.WriteLine("The delimiter string is: ""{0}""." & vbCrLf, stringSeparators(0))
' Split the string and return all elements
Console.WriteLine("2a) Return all elements:")
result = s2.Split(stringSeparators, StringSplitOptions.None)
Show(result)
' Split the string and return all elements with whitespace trimmed
Console.WriteLine("2b) Return all elements with whitespace trimmed:")
result = s2.Split(stringSeparators, StringSplitOptions.TrimEntries)
Show(result)
' Split the string and return all non-empty elements
Console.WriteLine("2c) Return all non-empty elements:")
result = s2.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries)
Show(result)
' Split the string and return all non-whitespace elements with whitespace trimmed
Console.WriteLine("2d) Return all non-whitespace elements with whitespace trimmed:")
result = s2.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries Or StringSplitOptions.TrimEntries)
Show(result)
' Split the string into only two elements, keeping the remainder in the last match
Console.WriteLine("2e) Split into only two elements:")
result = s2.Split(stringSeparators, 2, StringSplitOptions.None)
Show(result)
' Split the string into only two elements with whitespace trimmed, keeping the remainder in the last match
Console.WriteLine("2f) Split into only two elements with whitespace trimmed:")
result = s2.Split(stringSeparators, 2, StringSplitOptions.TrimEntries)
Show(result)
' Split the string into only two non-empty elements, keeping the remainder in the last match
Console.WriteLine("2g) Split into only two non-empty elements:")
result = s2.Split(stringSeparators, 2, StringSplitOptions.RemoveEmptyEntries)
Show(result)
' Split the string into only two non-whitespace elements with whitespace trimmed, keeping the remainder in the last match
Console.WriteLine("2h) Split into only two non-whitespace elements with whitespace trimmed:")
result = s2.Split(stringSeparators, 2, StringSplitOptions.RemoveEmptyEntries Or StringSplitOptions.TrimEntries)
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:
'
' The original string is: ",ONE,, TWO,, , THREE,,".
' The delimiter character is: ','.
'
' 1a) Return all elements:
' The return value contains these 9 elements:
' <><ONE><>< TWO><>< >< THREE><><>
'
' 1b) Return all elements with whitespace trimmed:
' The return value contains these 9 elements:
' <><ONE><><TWO><><><THREE><><>
'
' 1c) Return all non-empty elements:
' The return value contains these 4 elements:
' <ONE>< TWO>< >< THREE>
'
' 1d) Return all non-whitespace elements with whitespace trimmed:
' The return value contains these 3 elements:
' <ONE><TWO><THREE>
'
' 1e) Split into only two elements:
' The return value contains these 2 elements:
' <><ONE,, TWO,, , THREE,,>
'
' 1f) Split into only two elements with whitespace trimmed:
' The return value contains these 2 elements:
' <><ONE,, TWO,, , THREE,,>
'
' 1g) Split into only two non-empty elements:
' The return value contains these 2 elements:
' <ONE>< TWO,, , THREE,,>
'
' 1h) Split into only two non-whitespace elements with whitespace trimmed:
' The return value contains these 2 elements:
' <ONE><TWO,, , THREE,,>
'
' 2) Split a string delimited by another string:
'
' The original string is: "[stop]ONE[stop] [stop]TWO [stop][stop] [stop]THREE[stop][stop] ".
' The delimiter string is: "[stop]".
'
' 2a) Return all elements:
' The return value contains these 9 elements:
' <><ONE>< ><TWO ><>< ><THREE><>< >
'
' 2b) Return all elements with whitespace trimmed:
' The return value contains these 9 elements:
' <><ONE><><TWO><><><THREE><><>
'
' 2c) Return all non-empty elements:
' The return value contains these 6 elements:
' <ONE>< ><TWO >< ><THREE>< >
'
' 2d) Return all non-whitespace elements with whitespace trimmed:
' The return value contains these 3 elements:
' <ONE><TWO><THREE>
'
' 2e) Split into only two elements:
' The return value contains these 2 elements:
' <><ONE[stop] [stop]TWO [stop][stop] [stop]THREE[stop][stop] >
'
' 2f) Split into only two elements with whitespace trimmed:
' The return value contains these 2 elements:
' <><ONE[stop] [stop]TWO [stop][stop] [stop]THREE[stop][stop]>
'
' 2g) Split into only two non-empty elements:
' The return value contains these 2 elements:
' <ONE>< [stop]TWO [stop][stop] [stop]THREE[stop][stop] >
'
' 2h) Split into only two non-whitespace elements with whitespace trimmed:
' The return value contains these 2 elements:
' <ONE><TWO [stop][stop] [stop]THREE[stop][stop]>
'
Uwagi
Znaki ogranicznika nie są uwzględniane w elementach zwracanej tablicy.
Jeśli to wystąpienie nie zawiera żadnego znaku w separator
lub parametr count
wynosi 1, zwracana tablica składa się z jednego elementu zawierającego to wystąpienie.
Jeśli parametr separator
jest null
lub nie zawiera znaków, przyjmuje się, że znaki odstępu są ogranicznikami. Znaki odstępu są definiowane przez standard Unicode, a metoda Char.IsWhiteSpace zwraca true
, jeśli są one przekazywane do niego.
Aby przekazać null
dla parametru char[] separator
, należy wskazać typ null
, aby uściślić wywołanie z innych przeciążeń, takich jak Split(String[], Int32, StringSplitOptions). Poniższy przykład przedstawia kilka sposobów jednoznacznego identyfikowania tego przeciążenia.
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);
let phrase = "The quick brown fox"
phrase.Split(Unchecked.defaultof<char[]>, 3, StringSplitOptions.RemoveEmptyEntries) |> ignore
phrase.Split(null :> char[], 3, StringSplitOptions.RemoveEmptyEntries) |> ignore
phrase.Split((null: char[]), 3, StringSplitOptions.RemoveEmptyEntries) |> ignore
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)
Jeśli parametr count
ma wartość zero lub parametr options
jest RemoveEmptyEntries, a długość tego wystąpienia wynosi zero, zwracana jest pusta tablica.
Każdy element separator
definiuje oddzielny znak ogranicznika. Jeśli parametr options
jest None, a dwa ograniczniki są sąsiadujące lub ogranicznik zostanie znaleziony na początku lub na końcu tego wystąpienia odpowiedni element tablicy zawiera Empty.
Jeśli w tym wystąpieniu istnieje więcej niż count
podciągów, pierwsze count
minus 1 podciągy są zwracane w pierwszym count
minus 1 elementy wartości zwracanej, a pozostałe znaki w tym wystąpieniu są zwracane w ostatnim elemenie wartości zwracanej.
Jeśli count
jest większa niż liczba podciągów, dostępne podciągy są zwracane i nie jest zgłaszany żaden wyjątek.
Zagadnienia dotyczące wydajności
Metody Split przydzielają pamięć dla zwróconego obiektu tablicy i obiektu String dla każdego elementu tablicy. Jeśli aplikacja wymaga optymalnej wydajności lub jeśli zarządzanie alokacją pamięci ma krytyczne znaczenie w aplikacji, rozważ użycie metody IndexOf lub IndexOfAny i opcjonalnie metody Compare, aby zlokalizować podciąg w ciągu.
Jeśli dzielisz ciąg na znak separatora, użyj metody IndexOf lub IndexOfAny, aby zlokalizować znak separatora w ciągu. Jeśli dzielisz ciąg w ciągu separatora, użyj metody IndexOf lub IndexOfAny, aby zlokalizować pierwszy znak ciągu separatora. Następnie użyj metody Compare, aby określić, czy znaki po tym pierwszym znaku są równe pozostałym znakom ciągu separatora.
Ponadto jeśli ten sam zestaw znaków jest używany do dzielenia ciągów w wielu wywołaniach metody Split, rozważ utworzenie pojedynczej tablicy i odwołanie do niej w każdym wywołaniu metody. Znacznie zmniejsza to dodatkowe obciążenie każdego wywołania metody.
Uwagi dotyczące wywoływania
W programie .NET Framework 3.5 i starszych wersjach, jeśli metoda Split(Char[]) została przekazana separator
, która jest null
lub nie zawiera znaków, metoda używa nieco innego zestawu znaków odstępu, aby podzielić ciąg niż metoda Trim(Char[]), aby przyciąć ciąg. Począwszy od programu .NET Framework 4, obie metody używają identycznego zestawu znaków odstępów Unicode.
Dotyczy
Split(Char, Int32, StringSplitOptions)
- Źródło:
- String.Manipulation.cs
- Źródło:
- String.Manipulation.cs
- Źródło:
- String.Manipulation.cs
Dzieli ciąg na maksymalną liczbę podciągów na podstawie określonego ogranicznika i opcjonalnie opcji. Dzieli ciąg na maksymalną liczbę podciągów na podstawie podanego separatora znaków, opcjonalnie pomijając puste podciągnięcia z wyniku.
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()
Parametry
- separator
- Char
Znak, który rozdziela podciągi w tym wystąpieniu.
- count
- Int32
Maksymalna liczba elementów oczekiwana w tablicy.
- options
- StringSplitOptions
Bitowa kombinacja wartości wyliczenia, która określa, czy przycinać podciągy i uwzględniać puste podciągy.
Zwraca
Tablica zawierająca co najwyżej count
podciągi z tego wystąpienia, które są rozdzielane przez separator
.
Uwagi
Jeśli ciąg został już podzielony count
— 1 razy, ale koniec ciągu nie został osiągnięty, ostatni ciąg w zwróconej tablicy będzie zawierać pozostałe końcowe podciąg tego wystąpienia, nietknięte.
Dotyczy
Split(String[], StringSplitOptions)
- Źródło:
- String.Manipulation.cs
- Źródło:
- String.Manipulation.cs
- Źródło:
- String.Manipulation.cs
Dzieli ciąg na podciągi na podstawie określonego ciągu ogranicznika i, opcjonalnie, opcji.
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()
Parametry
- separator
- String[]
Tablica ciągów, które rozdzielą podciągi w tym ciągu, pustą tablicę, która nie zawiera ograniczników lub null
.
- options
- StringSplitOptions
Bitowa kombinacja wartości wyliczenia, która określa, czy przycinać podciągy i uwzględniać puste podciągy.
Zwraca
Tablica, której elementy zawierają podciągi w tym ciągu rozdzielone przez co najmniej jeden ciąg w separator
. Aby uzyskać więcej informacji, zobacz sekcję Uwagi.
- Atrybuty
Wyjątki
options
nie jest jedną z wartości StringSplitOptions.
Przykłady
Poniższy przykład ilustruje różnicę w tablicach zwracanych przez wywołanie metody String.Split(String[], StringSplitOptions) ciągu z parametrem options
równym StringSplitOptions.None i 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'
let source = "[stop]ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]"
let stringSeparators = [| "[stop]" |]
// Display the original string and delimiter string.
printfn $"Splitting the string:\n \"{source}\".\n"
printfn $"Using the delimiter string:\n \"{stringSeparators[0]}\"\n"
// Split a string delimited by another string and return all elements.
let result = source.Split(stringSeparators, StringSplitOptions.None)
printfn $"Result including all elements ({result.Length} elements):"
printf " "
for s in result do
printf $"""'{if String.IsNullOrEmpty s then "<>" else s}' """
printfn "\n"
// Split delimited by another string and return all non-empty elements.
let result = source.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries)
Console.WriteLine($"Result including non-empty elements ({result.Length} elements):")
printf " "
for s in result do
printf $"""'{if String.IsNullOrEmpty s then "<>" else s}' """
printfn ""
// 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]"
//
// let result including all elements (9 elements):
// '<>' 'ONE' '<>' 'TWO' '<>' '<>' 'THREE' '<>' '<>'
//
// let 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'
W poniższym przykładzie zdefiniowano tablicę separatorów, które zawierają znaki interpunkcyjne i znaki odstępu. Przekazanie tej tablicy wraz z wartością StringSplitOptions.RemoveEmptyEntries do metody Split(String[], StringSplitOptions) zwraca tablicę składającą się z pojedynczych wyrazów z ciągu.
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
let separators = [| ","; "."; "!"; "?"; ""; ":"; " " |]
let value = "The handsome, energetic, young dog was playing with his smaller, more lethargic litter mate."
let words = value.Split(separators, StringSplitOptions.RemoveEmptyEntries)
for word in words do
printfn $"${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
Należy pamiętać, że metoda jest wywoływana z argumentem options
ustawionym na StringSplitOptions.RemoveEmptyEntries. Zapobiega to włączeniu zwracanej tablicy z String.Empty wartości reprezentujących puste dopasowania podciągów między znakami interpunkcyjnymi i znakami odstępu.
Uwagi
Gdy ciąg jest rozdzielany przez znany zestaw ciągów, można użyć metody Split, aby oddzielić go od podciągów.
Ciągi ograniczników nie są uwzględniane w elementach zwracanej tablicy. Jeśli na przykład tablica separator
zawiera ciąg "--", a wartość bieżącego wystąpienia ciągu to "aa--bb-cc", metoda zwraca tablicę zawierającą trzy elementy: "aa", "bb" i "cc".
Jeśli to wystąpienie nie zawiera żadnych ciągów w separator
, zwracana tablica składa się z jednego elementu zawierającego to wystąpienie.
Jeśli parametr options
jest RemoveEmptyEntries, a długość tego wystąpienia wynosi zero, metoda zwraca pustą tablicę.
Każdy element separator
definiuje oddzielny ogranicznik składający się z co najmniej jednego znaku. Jeśli argument options
jest None, a dwa ograniczniki sąsiadują lub ogranicznik znajduje się na początku lub na końcu tego wystąpienia odpowiedni element tablicy zawiera String.Empty. Jeśli na przykład separator
zawiera dwa elementy "-" i "_", wartość wystąpienia ciągu to "-_aa-_", a wartość argumentu options
jest None, metoda zwraca tablicę ciągów z następującymi pięcioma elementami:
String.Empty, który reprezentuje pusty ciąg poprzedzający podciąg "-" na indeksie 0.
String.Empty, która reprezentuje pusty ciąg między podciągem "-" w indeksie 0 i podciągem "_" w indeksie 1.
"aa".
String.Empty, który reprezentuje pusty ciąg, który jest zgodny z podciągem "-" w indeksie 4.
String.Empty, który reprezentuje pusty ciąg, który jest zgodny z podciągem "_" w indeksie 5.
Tablica separatorów
Jeśli którykolwiek z elementów w separator
składa się z wielu znaków, cały podciąg jest uważany za ogranicznik. Jeśli na przykład jeden z elementów w separator
to "10", próba podzielenia ciągu "This10is10a10string". zwraca następującą tablicę z czterema elementami: { "This", "is", "a", "string". }.
Jeśli parametr separator
jest null
lub nie zawiera niepustych ciągów, przyjmuje się, że znaki odstępu są ogranicznikami. Znaki odstępu są definiowane przez standard Unicode, a metoda Char.IsWhiteSpace zwraca true
, jeśli są one przekazywane do niego.
Aby przekazać null
dla parametru string[] separator
, należy wskazać typ null
, aby uściślić wywołanie z innych przeciążeń, takich jak Split(Char[], StringSplitOptions). Poniższy przykład przedstawia kilka sposobów jednoznacznego identyfikowania tego przeciążenia.
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);
let phrase = "The quick brown fox"
phrase.Split(Unchecked.defaultof<string[]>, StringSplitOptions.RemoveEmptyEntries) |> ignore
phrase.Split(null :> string[], StringSplitOptions.RemoveEmptyEntries) |> ignore
phrase.Split((null: string[]), StringSplitOptions.RemoveEmptyEntries) |> ignore
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)
Szczegóły porównania
Metoda Split wyodrębnia podciągi w tym ciągu rozdzielonym przez co najmniej jeden ciąg w parametrze separator
i zwraca te podciągi jako elementy tablicy.
Metoda Split wyszukuje ograniczniki, wykonując porównania przy użyciu reguł sortowania z uwzględnieniem wielkości liter. Aby uzyskać więcej informacji na temat sortowania wyrazów, ciągów i porządkowych, zobacz wyliczenie System.Globalization.CompareOptions.
Metoda Split ignoruje dowolny element separator
, którego wartość jest null
lub pusty ciąg ("").
Aby uniknąć niejednoznacznych wyników, gdy ciągi w separator
mają wspólne znaki, operacja Split następuje od początku do końca wartości wystąpienia i pasuje do pierwszego elementu w separator
, który jest równy ogranicznikowi w wystąpieniu. Kolejność napotkania podciągów w wystąpieniu ma pierwszeństwo przed kolejnością elementów w separator
.
Rozważmy na przykład wystąpienie, którego wartość to "abcdef". Jeśli pierwszy element w separator
to "ef", a drugi element to "bcde", wynikiem operacji podziału będzie tablica ciągów zawierająca dwa elementy: "a" i "f". Dzieje się tak, ponieważ podciąg w wystąpieniu "bcde" jest napotykany i pasuje do elementu w separator
przed napotkaniem podciągu "f".
Jeśli jednak pierwszy element separator
to "bcd", a drugi element to "bc", wynikiem operacji podziału będzie tablica ciągów zawierająca dwa elementy: "a" i "ef". Jest to spowodowane tym, że "bcd" jest pierwszym ogranicznikiem w separator
, który pasuje do ogranicznika w wystąpieniu. Jeśli kolejność separatorów została odwrócona, więc pierwszy element to "bc", a drugi element to "bcd", wynikiem będzie tablica ciągów zawierająca dwa elementy: "a" i "def".
Zagadnienia dotyczące wydajności
Metody Split przydzielają pamięć dla zwróconego obiektu tablicy i obiektu String dla każdego elementu tablicy. Jeśli aplikacja wymaga optymalnej wydajności lub jeśli zarządzanie alokacją pamięci ma krytyczne znaczenie w aplikacji, rozważ użycie metody IndexOf lub IndexOfAny i opcjonalnie metody Compare, aby zlokalizować podciąg w ciągu.
Jeśli dzielisz ciąg na znak separatora, użyj metody IndexOf lub IndexOfAny, aby zlokalizować znak separatora w ciągu. Jeśli dzielisz ciąg w ciągu separatora, użyj metody IndexOf lub IndexOfAny, aby zlokalizować pierwszy znak ciągu separatora. Następnie użyj metody Compare, aby określić, czy znaki po tym pierwszym znaku są równe pozostałym znakom ciągu separatora.
Ponadto jeśli ten sam zestaw znaków jest używany do dzielenia ciągów w wielu wywołaniach metody Split, rozważ utworzenie pojedynczej tablicy i odwołanie do niej w każdym wywołaniu metody. Znacznie zmniejsza to dodatkowe obciążenie każdego wywołania metody.
Uwagi dotyczące wywoływania
W programie .NET Framework 3.5 i starszych wersjach, jeśli metoda Split(Char[]) została przekazana separator
, która jest null
lub nie zawiera znaków, metoda używa nieco innego zestawu znaków odstępu, aby podzielić ciąg niż metoda Trim(Char[]), aby przyciąć ciąg. Począwszy od programu .NET Framework 4, obie metody używają identycznego zestawu znaków odstępów Unicode.
Dotyczy
Split(String, StringSplitOptions)
- Źródło:
- String.Manipulation.cs
- Źródło:
- String.Manipulation.cs
- Źródło:
- String.Manipulation.cs
Dzieli ciąg na podciągy, które są oparte na podanym separatorze ciągów.
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()
Parametry
- separator
- String
Ciąg, który rozdziela podciągi w tym ciągu.
- options
- StringSplitOptions
Bitowa kombinacja wartości wyliczenia, która określa, czy przycinać podciągy i uwzględniać puste podciągy.
Zwraca
Tablica, której elementy zawierają podciągi z tego wystąpienia, które są rozdzielane przez separator
.
Dotyczy
Split(Char[])
- Źródło:
- String.Manipulation.cs
- Źródło:
- String.Manipulation.cs
- Źródło:
- String.Manipulation.cs
Dzieli ciąg na podciągi na podstawie określonych znaków ograniczników.
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()
Parametry
- separator
- Char[]
Tablica znaków ograniczników, pusta tablica, która nie zawiera ograniczników lub null
.
Zwraca
Tablica, której elementy zawierają podciągi z tego wystąpienia, które są rozdzielane co najmniej jednym znakiem w separator
. Aby uzyskać więcej informacji, zobacz sekcję Uwagi.
Przykłady
W poniższym przykładzie pokazano, jak wyodrębnić poszczególne wyrazy z bloku tekstu, traktując znak spacji (
) i znak tabulatora (\t
) jako ograniczniki. Rozdzielany ciąg zawiera oba te znaki.
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
let s = "Today\tI'm going to school"
let subs = s.Split(' ', '\t')
for sub in subs do
printfn $"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
Uwagi
Gdy ciąg jest rozdzielany przez znany zestaw znaków, można użyć metody Split(Char[]), aby oddzielić go od podciągów.
Znaki ogranicznika nie są uwzględniane w elementach zwracanej tablicy. Jeśli na przykład tablica separatorów zawiera znak "-", a wartość bieżącego wystąpienia ciągu to "aa-bb-cc", metoda zwraca tablicę zawierającą trzy elementy: "aa", "bb" i "cc".
Jeśli to wystąpienie nie zawiera żadnych znaków w separator
, zwracana tablica składa się z jednego elementu zawierającego to wystąpienie.
Każdy element separator
definiuje oddzielny znak ogranicznika. Jeśli dwa ograniczniki są sąsiadujące lub ogranicznik zostanie znaleziony na początku lub na końcu tego wystąpienia, odpowiedni element w zwracanej tablicy zawiera Empty.
W poniższej tabeli przedstawiono kilka przykładów.
Język | Wartość ciągu | Separator | Zwracana tablica |
---|---|---|---|
C# | "42, 12, 19" | nowy znak[] {',", ' '} | {"42", "", "12", "", "19"} |
Visual Basic | "42, 12, 19" | Char() = {","c, " "c}) | {"42", "", "12", "", "19"} |
C# | "42..12..19." | nowy znak[] {'.} | {"42", "", "12", "", "19", ""} |
Visual Basic | "42..12..19." | Char() = {"." c} | {"42", "", "12", "", "19", ""} |
C# | "Banan" | nowy znak[] {'.} | {"Banana"} |
Visual Basic | "Banan" | Char() = {"." c} | {"Banana"} |
C# | "Darb\nSmarba" | nowy znak[] {} | {"Darb", "Smarba"} |
Visual Basic | "Darb" & vbLf & "Smarba" | Char() = {} | {"Darb", "Smarba"} |
C# | "Darb\nSmarba" | zero | {"Darb", "Smarba"} |
Visual Basic | "Darb" & vbLf & "Smarba" | Nic | {"Darb", "Smarba"} |
Tablica separatorów
Każdy element separatora definiuje oddzielny ogranicznik składający się z jednego znaku.
Jeśli argument separator
jest null
lub nie zawiera znaków, metoda traktuje znaki odstępu jako ograniczniki. Znaki odstępu są definiowane przez standard Unicode, a metoda Char.IsWhiteSpace zwraca true
, jeśli do niego zostanie przekazany znak odstępu.
String.Split(Char[]) i rozpoznawanie przeciążenia kompilatora
Chociaż pojedynczy parametr dla tego przeciążenia String.Split jest tablicą znaków, można wywołać go z pojedynczym znakiem, jak pokazano w poniższym przykładzie.
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.
let value = "This is a short string."
let delimiter = 's'
let substrings = value.Split delimiter
for substring in substrings do
printfn $"{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.
Ponieważ parametr separator
jest ozdobiony atrybutem ParamArrayAttribute, kompilatory zinterpretują pojedynczy znak jako tablicę znaków pojedynczego elementu. Nie dotyczy to innych przeciążeń String.Split, które obejmują separator
parametru; Należy jawnie przekazać te przeciążenia tablicy znaków jako argument separator
.
Szczegóły porównania
Metoda Split(Char[]) wyodrębnia podciągi w tym ciągu rozdzielonym przez co najmniej jeden znak w tablicy separator
i zwraca te podciągi jako elementy tablicy.
Metoda Split(Char[]) wyszukuje ograniczniki, wykonując porównania przy użyciu reguł sortowania z uwzględnieniem wielkości liter. Aby uzyskać więcej informacji na temat sortowania wyrazów, ciągów i porządkowych, zobacz wyliczenie System.Globalization.CompareOptions.
Zagadnienia dotyczące wydajności
Metody Split przydzielają pamięć dla zwróconego obiektu tablicy i obiektu String dla każdego elementu tablicy. Jeśli aplikacja wymaga optymalnej wydajności lub jeśli zarządzanie alokacją pamięci ma krytyczne znaczenie w aplikacji, rozważ użycie metody IndexOf lub IndexOfAny. Istnieje również możliwość użycia metody Compare w celu zlokalizowania podciągów w ciągu.
Aby podzielić ciąg na znak separatora, użyj metody IndexOf lub IndexOfAny, aby zlokalizować znak separatora w ciągu. Aby podzielić ciąg w ciągu separatora, użyj metody IndexOf lub IndexOfAny, aby zlokalizować pierwszy znak ciągu separatora. Następnie użyj metody Compare, aby określić, czy znaki po tym pierwszym znaku są równe pozostałym znakom ciągu separatora.
Ponadto jeśli ten sam zestaw znaków jest używany do dzielenia ciągów w wielu wywołaniach metody Split, rozważ utworzenie pojedynczej tablicy i odwołanie do niej w każdym wywołaniu metody. Znacznie zmniejsza to dodatkowe obciążenie każdego wywołania metody.
Uwagi dotyczące wywoływania
W programie .NET Framework 3.5 i starszych wersjach, jeśli metoda Split(Char[]) została przekazana separator
, która jest null
lub nie zawiera znaków, metoda używa nieco innego zestawu znaków odstępu, aby podzielić ciąg niż metoda Trim(Char[]), aby przyciąć ciąg. Począwszy od programu .NET Framework 4, obie metody używają identycznego zestawu znaków odstępów Unicode.
Zobacz też
- Char
- Concat(Object)
- Insert(Int32, String)
- Join(String, String[])
- Remove(Int32, Int32)
- Replace(Char, Char)
- Substring(Int32)
- Trim(Char[])
Dotyczy
Split(Char[], Int32)
- Źródło:
- String.Manipulation.cs
- Źródło:
- String.Manipulation.cs
- Źródło:
- String.Manipulation.cs
Dzieli ciąg na maksymalną liczbę podciągów na podstawie określonych znaków ograniczników.
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()
Parametry
- separator
- Char[]
Tablica znaków rozdzielających podciągi w tym ciągu, pustą tablicę, która nie zawiera ograniczników lub null
.
- count
- Int32
Maksymalna liczba podciągów do zwrócenia.
Zwraca
Tablica, której elementy zawierają podciągi w tym wystąpieniu, które są rozdzielane co najmniej jednym znakiem w separator
. Aby uzyskać więcej informacji, zobacz sekcję Uwagi.
Wyjątki
count
jest ujemna.
Przykłady
W poniższym przykładzie pokazano, jak można użyć count
, aby ograniczyć liczbę ciągów zwracanych przez 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"
let name = "Alex Johnson III"
let subs = name.Split(null, 2)
let firstName = subs[0]
let lastName =
if subs.Length > 1 then
subs[1]
else
""
// firstName = "Alex"
// lastName = "Johnson III"
Console.WriteLine("What is your name?")
Dim name As String = Console.ReadLine()
Dim substrings = name.Split(" "c, count:=2)
Dim firstName As String = substrings(0)
Dim lastName As String
If substrings.Length > 1 Then
lastName = substrings(1)
End If
Console.WriteLine("firstName = ""{0}""", firstName)
Console.WriteLine("lastName = ""{0}""", lastName)
' If the user enters "Alex Johnson III":
' firstName = "Alex"
' lastName = "Johnson III"
Uwagi
Znaki ogranicznika nie są uwzględniane w elementach zwracanej tablicy.
Jeśli to wystąpienie nie zawiera żadnych znaków w separator
, zwracana tablica składa się z jednego elementu zawierającego to wystąpienie. Jeśli count
ma wartość zero, zwracana jest pusta tablica.
Jeśli parametr separator
jest null
lub nie zawiera znaków, przyjmuje się, że znaki odstępu są ogranicznikami. Znaki odstępu są definiowane przez standard Unicode, a metoda Char.IsWhiteSpace zwraca true
, jeśli są one przekazywane do niego.
Każdy element separator
definiuje oddzielny znak ogranicznika. Jeśli dwa ograniczniki są sąsiadujące lub ogranicznik znajduje się na początku lub na końcu tego wystąpienia, odpowiedni element tablicy zawiera Empty.
Jeśli w tym wystąpieniu istnieje więcej niż count
podciągów, pierwsze podciągy count - 1
są zwracane w pierwszych count - 1
elementów wartości zwracanej, a pozostałe znaki w tym wystąpieniu są zwracane w ostatnim elemenie wartości zwracanej.
Jeśli count
jest większa niż liczba podciągów, dostępne podciągy są zwracane i nie jest zgłaszany żaden wyjątek.
W poniższej tabeli przedstawiono kilka przykładów.
Język | Wartość ciągu | Separator | Zwracana tablica |
---|---|---|---|
C# | "42, 12, 19" | nowy znak[] {',", ' '} | {"42", "", "12", "", "19"} |
Visual Basic | "42, 12, 19" | Char() = {","c, " "c}) | {"42", "", "12", "", "19"} |
C# | "42..12..19." | nowy znak[] {'.} | {"42", "", "12", "", "19", ""} |
Visual Basic | "42..12..19." | Char() = {"." c} | {"42", "", "12", "", "19", ""} |
C# | "Banan" | nowy znak[] {'.} | {"Banana"} |
Visual Basic | "Banan" | Char() = {"." c} | {"Banana"} |
C# | "Darb\nSmarba" | nowy znak[] {} | {"Darb", "Smarba"} |
Visual Basic | "Darb" & vbLf & "Smarba" | Char() = {} | {"Darb", "Smarba"} |
C# | "Darb\nSmarba" | zero | {"Darb", "Smarba"} |
Visual Basic | "Darb" & vbLf & "Smarba" | Nic | {"Darb", "Smarba"} |
Zagadnienia dotyczące wydajności
Metody Split przydzielają pamięć dla zwróconego obiektu tablicy i obiektu String dla każdego elementu tablicy. Jeśli aplikacja wymaga optymalnej wydajności lub jeśli zarządzanie alokacją pamięci ma krytyczne znaczenie w aplikacji, rozważ użycie metody IndexOf lub IndexOfAny i opcjonalnie metody Compare, aby zlokalizować podciąg w ciągu.
Jeśli dzielisz ciąg na znak separatora, użyj metody IndexOf lub IndexOfAny, aby zlokalizować znak separatora w ciągu. Jeśli dzielisz ciąg w ciągu separatora, użyj metody IndexOf lub IndexOfAny, aby zlokalizować pierwszy znak ciągu separatora. Następnie użyj metody Compare, aby określić, czy znaki po tym pierwszym znaku są równe pozostałym znakom ciągu separatora.
Ponadto jeśli ten sam zestaw znaków jest używany do dzielenia ciągów w wielu wywołaniach metody Split, rozważ utworzenie pojedynczej tablicy i odwołanie do niej w każdym wywołaniu metody. Znacznie zmniejsza to dodatkowe obciążenie każdego wywołania metody.
Uwagi dotyczące wywoływania
W programie .NET Framework 3.5 i starszych wersjach, jeśli metoda Split(Char[]) została przekazana separator
, która jest null
lub nie zawiera znaków, metoda używa nieco innego zestawu znaków odstępu, aby podzielić ciąg niż metoda Trim(Char[]), aby przyciąć ciąg. Począwszy od programu .NET Framework 4, obie metody używają identycznego zestawu znaków odstępów Unicode.
Zobacz też
- Char
- Array
- Int32
- Concat(Object)
- Insert(Int32, String)
- Join(String, String[])
- Remove(Int32, Int32)
- Replace(Char, Char)
- Substring(Int32)
- Trim(Char[])
Dotyczy
Split(Char, StringSplitOptions)
- Źródło:
- String.Manipulation.cs
- Źródło:
- String.Manipulation.cs
- Źródło:
- String.Manipulation.cs
Dzieli ciąg na podciągi na podstawie określonego znaku ogranicznika i, opcjonalnie, opcji.
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()
Parametry
- separator
- Char
Znak, który rozdziela podciągi w tym ciągu.
- options
- StringSplitOptions
Bitowa kombinacja wartości wyliczenia, która określa, czy przycinać podciągy i uwzględniać puste podciągy.
Zwraca
Tablica, której elementy zawierają podciągi z tego wystąpienia, które są rozdzielane przez separator
.
Dotyczy
Split(ReadOnlySpan<Char>)
Dzieli ciąg na podciągi na podstawie określonych znaków ograniczników.
public:
cli::array <System::String ^> ^ Split(ReadOnlySpan<char> separator);
public string[] Split (scoped ReadOnlySpan<char> separator);
member this.Split : ReadOnlySpan<char> -> string[]
Public Function Split (separator As ReadOnlySpan(Of Char)) As String()
Parametry
- separator
- ReadOnlySpan<Char>
Zakres znaków ograniczników lub pusty zakres, który nie zawiera ograniczników.
Zwraca
Tablica, której elementy zawierają podciągi z tego wystąpienia, które są rozdzielane co najmniej jednym znakiem w separator
.
Dotyczy
Split(String[], Int32, StringSplitOptions)
- Źródło:
- String.Manipulation.cs
- Źródło:
- String.Manipulation.cs
- Źródło:
- String.Manipulation.cs
Dzieli ciąg na maksymalną liczbę podciągów na podstawie określonych ciągów ograniczników i opcjonalnie opcji.
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()
Parametry
- separator
- String[]
Ciągi rozdzielające podciągi w tym ciągu, pustą tablicę, która nie zawiera ograniczników ani null
.
- count
- Int32
Maksymalna liczba podciągów do zwrócenia.
- options
- StringSplitOptions
Bitowa kombinacja wartości wyliczenia, która określa, czy przycinać podciągy i uwzględniać puste podciągy.
Zwraca
Tablica, której elementy zawierają podciągi w tym ciągu rozdzielone przez co najmniej jeden ciąg w separator
. Aby uzyskać więcej informacji, zobacz sekcję Uwagi.
- Atrybuty
Wyjątki
count
jest ujemna.
options
nie jest jedną z wartości StringSplitOptions.
Przykłady
W poniższym przykładzie użyto wyliczenia StringSplitOptions do uwzględnienia lub wykluczenia podciągów wygenerowanych przez metodę Split.
// 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.
// Example 1: Split a string delimited by characters
Console.WriteLine("1) Split a string delimited by characters:\n");
string s1 = ",ONE,, TWO,, , THREE,,";
char[] charSeparators = new char[] { ',' };
string[] result;
Console.WriteLine($"The original string is: \"{s1}\".");
Console.WriteLine($"The delimiter character is: '{charSeparators[0]}'.\n");
// Split the string and return all elements
Console.WriteLine("1a) Return all elements:");
result = s1.Split(charSeparators, StringSplitOptions.None);
Show(result);
// Split the string and return all elements with whitespace trimmed
Console.WriteLine("1b) Return all elements with whitespace trimmed:");
result = s1.Split(charSeparators, StringSplitOptions.TrimEntries);
Show(result);
// Split the string and return all non-empty elements
Console.WriteLine("1c) Return all non-empty elements:");
result = s1.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries);
Show(result);
// Split the string and return all non-whitespace elements with whitespace trimmed
Console.WriteLine("1d) Return all non-whitespace elements with whitespace trimmed:");
result = s1.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
Show(result);
// Split the string into only two elements, keeping the remainder in the last match
Console.WriteLine("1e) Split into only two elements:");
result = s1.Split(charSeparators, 2, StringSplitOptions.None);
Show(result);
// Split the string into only two elements with whitespace trimmed, keeping the remainder in the last match
Console.WriteLine("1f) Split into only two elements with whitespace trimmed:");
result = s1.Split(charSeparators, 2, StringSplitOptions.TrimEntries);
Show(result);
// Split the string into only two non-empty elements, keeping the remainder in the last match
Console.WriteLine("1g) Split into only two non-empty elements:");
result = s1.Split(charSeparators, 2, StringSplitOptions.RemoveEmptyEntries);
Show(result);
// Split the string into only two non-whitespace elements with whitespace trimmed, keeping the remainder in the last match
Console.WriteLine("1h) Split into only two non-whitespace elements with whitespace trimmed:");
result = s1.Split(charSeparators, 2, StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
Show(result);
// Example 2: Split a string delimited by another string
Console.WriteLine("2) Split a string delimited by another string:\n");
string s2 = "[stop]" +
"ONE[stop] [stop]" +
"TWO [stop][stop] [stop]" +
"THREE[stop][stop] ";
string[] stringSeparators = new string[] { "[stop]" };
Console.WriteLine($"The original string is: \"{s2}\".");
Console.WriteLine($"The delimiter string is: \"{stringSeparators[0]}\".\n");
// Split the string and return all elements
Console.WriteLine("2a) Return all elements:");
result = s2.Split(stringSeparators, StringSplitOptions.None);
Show(result);
// Split the string and return all elements with whitespace trimmed
Console.WriteLine("2b) Return all elements with whitespace trimmed:");
result = s2.Split(stringSeparators, StringSplitOptions.TrimEntries);
Show(result);
// Split the string and return all non-empty elements
Console.WriteLine("2c) Return all non-empty elements:");
result = s2.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);
Show(result);
// Split the string and return all non-whitespace elements with whitespace trimmed
Console.WriteLine("2d) Return all non-whitespace elements with whitespace trimmed:");
result = s2.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
Show(result);
// Split the string into only two elements, keeping the remainder in the last match
Console.WriteLine("2e) Split into only two elements:");
result = s2.Split(stringSeparators, 2, StringSplitOptions.None);
Show(result);
// Split the string into only two elements with whitespace trimmed, keeping the remainder in the last match
Console.WriteLine("2f) Split into only two elements with whitespace trimmed:");
result = s2.Split(stringSeparators, 2, StringSplitOptions.TrimEntries);
Show(result);
// Split the string into only two non-empty elements, keeping the remainder in the last match
Console.WriteLine("2g) Split into only two non-empty elements:");
result = s2.Split(stringSeparators, 2, StringSplitOptions.RemoveEmptyEntries);
Show(result);
// Split the string into only two non-whitespace elements with whitespace trimmed, keeping the remainder in the last match
Console.WriteLine("2h) Split into only two non-whitespace elements with whitespace trimmed:");
result = s2.Split(stringSeparators, 2, StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
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:
The original string is: ",ONE,, TWO,, , THREE,,".
The delimiter character is: ','.
1a) Return all elements:
The return value contains these 9 elements:
<><ONE><>< TWO><>< >< THREE><><>
1b) Return all elements with whitespace trimmed:
The return value contains these 9 elements:
<><ONE><><TWO><><><THREE><><>
1c) Return all non-empty elements:
The return value contains these 4 elements:
<ONE>< TWO>< >< THREE>
1d) Return all non-whitespace elements with whitespace trimmed:
The return value contains these 3 elements:
<ONE><TWO><THREE>
1e) Split into only two elements:
The return value contains these 2 elements:
<><ONE,, TWO,, , THREE,,>
1f) Split into only two elements with whitespace trimmed:
The return value contains these 2 elements:
<><ONE,, TWO,, , THREE,,>
1g) Split into only two non-empty elements:
The return value contains these 2 elements:
<ONE>< TWO,, , THREE,,>
1h) Split into only two non-whitespace elements with whitespace trimmed:
The return value contains these 2 elements:
<ONE><TWO,, , THREE,,>
2) Split a string delimited by another string:
The original string is: "[stop]ONE[stop] [stop]TWO [stop][stop] [stop]THREE[stop][stop] ".
The delimiter string is: "[stop]".
2a) Return all elements:
The return value contains these 9 elements:
<><ONE>< ><TWO ><>< ><THREE><>< >
2b) Return all elements with whitespace trimmed:
The return value contains these 9 elements:
<><ONE><><TWO><><><THREE><><>
2c) Return all non-empty elements:
The return value contains these 6 elements:
<ONE>< ><TWO >< ><THREE>< >
2d) Return all non-whitespace elements with whitespace trimmed:
The return value contains these 3 elements:
<ONE><TWO><THREE>
2e) Split into only two elements:
The return value contains these 2 elements:
<><ONE[stop] [stop]TWO [stop][stop] [stop]THREE[stop][stop] >
2f) Split into only two elements with whitespace trimmed:
The return value contains these 2 elements:
<><ONE[stop] [stop]TWO [stop][stop] [stop]THREE[stop][stop]>
2g) Split into only two non-empty elements:
The return value contains these 2 elements:
<ONE>< [stop]TWO [stop][stop] [stop]THREE[stop][stop] >
2h) Split into only two non-whitespace elements with whitespace trimmed:
The return value contains these 2 elements:
<ONE><TWO [stop][stop] [stop]THREE[stop][stop]>
*/
// This example demonstrates the String.Split() methods that use
// the StringSplitOptions enumeration.
// Display the array of separated strings using a local function
let show (entries: string[]) =
printfn $"The return value contains these {entries.Length} elements:"
for entry in entries do
printf $"<{entry}>"
printf "\n\n"
// Example 1: Split a string delimited by characters
printfn "1) Split a string delimited by characters:\n"
let s1 = ",ONE,, TWO,, , THREE,,"
let charSeparators = [| ',' |]
printfn $"The original string is: \"{s1}\"."
printfn $"The delimiter character is: '{charSeparators[0]}'.\n"
// Split the string and return all elements
printfn "1a) Return all elements:"
let result = s1.Split(charSeparators, StringSplitOptions.None)
show result
// Split the string and return all elements with whitespace trimmed
printfn "1b) Return all elements with whitespace trimmed:"
let result = s1.Split(charSeparators, StringSplitOptions.TrimEntries)
show result
// Split the string and return all non-empty elements
printfn "1c) Return all non-empty elements:"
let result = s1.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries)
show result
// Split the string and return all non-whitespace elements with whitespace trimmed
printfn "1d) Return all non-whitespace elements with whitespace trimmed:"
let result = s1.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries ||| StringSplitOptions.TrimEntries)
show result
// Split the string into only two elements, keeping the remainder in the last match
printfn "1e) Split into only two elements:"
let result = s1.Split(charSeparators, 2, StringSplitOptions.None)
show result
// Split the string into only two elements with whitespace trimmed, keeping the remainder in the last match
printfn "1f) Split into only two elements with whitespace trimmed:"
let result = s1.Split(charSeparators, 2, StringSplitOptions.TrimEntries)
show result
// Split the string into only two non-empty elements, keeping the remainder in the last match
printfn "1g) Split into only two non-empty elements:"
let result = s1.Split(charSeparators, 2, StringSplitOptions.RemoveEmptyEntries)
show result
// Split the string into only two non-whitespace elements with whitespace trimmed, keeping the remainder in the last match
printfn "1h) Split into only two non-whitespace elements with whitespace trimmed:"
let result = s1.Split(charSeparators, 2, StringSplitOptions.RemoveEmptyEntries ||| StringSplitOptions.TrimEntries)
show result
// Example 2: Split a string delimited by another string
printfn "2) Split a string delimited by another string:\n"
let s2 = "[stop]" +
"ONE[stop] [stop]" +
"TWO [stop][stop] [stop]" +
"THREE[stop][stop] "
let stringSeparators = [| "[stop]" |]
printfn $"The original string is: \"{s2}\"."
printfn $"The delimiter string is: \"{stringSeparators[0]}\".\n"
// Split the string and return all elements
printfn "2a) Return all elements:"
let result = s2.Split(stringSeparators, StringSplitOptions.None)
show result
// Split the string and return all elements with whitespace trimmed
printfn "2b) Return all elements with whitespace trimmed:"
let result = s2.Split(stringSeparators, StringSplitOptions.TrimEntries)
show result
// Split the string and return all non-empty elements
printfn "2c) Return all non-empty elements:"
let result = s2.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries)
show result
// Split the string and return all non-whitespace elements with whitespace trimmed
printfn "2d) Return all non-whitespace elements with whitespace trimmed:"
let result = s2.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries ||| StringSplitOptions.TrimEntries)
show result
// Split the string into only two elements, keeping the remainder in the last match
printfn "2e) Split into only two elements:"
let result = s2.Split(stringSeparators, 2, StringSplitOptions.None)
show result
// Split the string into only two elements with whitespace trimmed, keeping the remainder in the last match
printfn "2f) Split into only two elements with whitespace trimmed:"
let result = s2.Split(stringSeparators, 2, StringSplitOptions.TrimEntries)
show result
// Split the string into only two non-empty elements, keeping the remainder in the last match
printfn "2g) Split into only two non-empty elements:"
let result = s2.Split(stringSeparators, 2, StringSplitOptions.RemoveEmptyEntries)
show result
// Split the string into only two non-whitespace elements with whitespace trimmed, keeping the remainder in the last match
printfn "2h) Split into only two non-whitespace elements with whitespace trimmed:"
let result = s2.Split(stringSeparators, 2, StringSplitOptions.RemoveEmptyEntries ||| StringSplitOptions.TrimEntries)
show result
(*
This example produces the following results:
1) Split a string delimited by characters:
The original string is: ",ONE,, TWO,, , THREE,,".
The delimiter character is: ','.
1a) Return all elements:
The return value contains these 9 elements:
<><ONE><>< TWO><>< >< THREE><><>
1b) Return all elements with whitespace trimmed:
The return value contains these 9 elements:
<><ONE><><TWO><><><THREE><><>
1c) Return all non-empty elements:
The return value contains these 4 elements:
<ONE>< TWO>< >< THREE>
1d) Return all non-whitespace elements with whitespace trimmed:
The return value contains these 3 elements:
<ONE><TWO><THREE>
1e) Split into only two elements:
The return value contains these 2 elements:
<><ONE,, TWO,, , THREE,,>
1f) Split into only two elements with whitespace trimmed:
The return value contains these 2 elements:
<><ONE,, TWO,, , THREE,,>
1g) Split into only two non-empty elements:
The return value contains these 2 elements:
<ONE>< TWO,, , THREE,,>
1h) Split into only two non-whitespace elements with whitespace trimmed:
The return value contains these 2 elements:
<ONE><TWO,, , THREE,,>
2) Split a string delimited by another string:
The original string is: "[stop]ONE[stop] [stop]TWO [stop][stop] [stop]THREE[stop][stop] ".
The delimiter string is: "[stop]".
2a) Return all elements:
The return value contains these 9 elements:
<><ONE>< ><TWO ><>< ><THREE><>< >
2b) Return all elements with whitespace trimmed:
The return value contains these 9 elements:
<><ONE><><TWO><><><THREE><><>
2c) Return all non-empty elements:
The return value contains these 6 elements:
<ONE>< ><TWO >< ><THREE>< >
2d) Return all non-whitespace elements with whitespace trimmed:
The return value contains these 3 elements:
<ONE><TWO><THREE>
2e) Split into only two elements:
The return value contains these 2 elements:
<><ONE[stop] [stop]TWO [stop][stop] [stop]THREE[stop][stop] >
2f) Split into only two elements with whitespace trimmed:
The return value contains these 2 elements:
<><ONE[stop] [stop]TWO [stop][stop] [stop]THREE[stop][stop]>
2g) Split into only two non-empty elements:
The return value contains these 2 elements:
<ONE>< [stop]TWO [stop][stop] [stop]THREE[stop][stop] >
2h) Split into only two non-whitespace elements with whitespace trimmed:
The return value contains these 2 elements:
<ONE><TWO [stop][stop] [stop]THREE[stop][stop]>
*)
Public Shared Sub StringSplitOptionsExamples()
' This example demonstrates the String.Split() methods that use
' the StringSplitOptions enumeration.
' Example 1: Split a string delimited by characters
Console.WriteLine("1) Split a string delimited by characters:" & vbCrLf)
Dim s1 As String = ",ONE,, TWO,, , THREE,,"
Dim charSeparators() As Char = {","c}
Dim result() As String
Console.WriteLine("The original string is: ""{0}"".", s1)
Console.WriteLine("The delimiter character is: '{0}'." & vbCrLf, charSeparators(0))
' Split the string and return all elements
Console.WriteLine("1a) Return all elements:")
result = s1.Split(charSeparators, StringSplitOptions.None)
Show(result)
' Split the string and return all elements with whitespace trimmed
Console.WriteLine("1b) Return all elements with whitespace trimmed:")
result = s1.Split(charSeparators, StringSplitOptions.TrimEntries)
Show(result)
' Split the string and return all non-empty elements
Console.WriteLine("1c) Return all non-empty elements:")
result = s1.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries)
Show(result)
' Split the string and return all non-whitespace elements with whitespace trimmed
Console.WriteLine("1d) Return all non-whitespace elements with whitespace trimmed:")
result = s1.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries Or StringSplitOptions.TrimEntries)
Show(result)
' Split the string into only two elements, keeping the remainder in the last match
Console.WriteLine("1e) Split into only two elements:")
result = s1.Split(charSeparators, 2, StringSplitOptions.None)
Show(result)
' Split the string into only two elements with whitespace trimmed, keeping the remainder in the last match
Console.WriteLine("1f) Split into only two elements with whitespace trimmed:")
result = s1.Split(charSeparators, 2, StringSplitOptions.TrimEntries)
Show(result)
' Split the string into only two non-empty elements, keeping the remainder in the last match
Console.WriteLine("1g) Split into only two non-empty elements:")
result = s1.Split(charSeparators, 2, StringSplitOptions.RemoveEmptyEntries)
Show(result)
' Split the string into only two non-whitespace elements with whitespace trimmed, keeping the remainder in the last match
Console.WriteLine("1h) Split into only two non-whitespace elements with whitespace trimmed:")
result = s1.Split(charSeparators, 2, StringSplitOptions.RemoveEmptyEntries Or StringSplitOptions.TrimEntries)
Show(result)
' Example 2: Split a string delimited by another string
Console.WriteLine("2) Split a string delimited by another string:" & vbCrLf)
Dim s2 As String = "[stop]" +
"ONE[stop] [stop]" +
"TWO [stop][stop] [stop]" +
"THREE[stop][stop] "
Dim stringSeparators() As String = {"[stop]"}
Console.WriteLine("The original string is: ""{0}"".", s2)
Console.WriteLine("The delimiter string is: ""{0}""." & vbCrLf, stringSeparators(0))
' Split the string and return all elements
Console.WriteLine("2a) Return all elements:")
result = s2.Split(stringSeparators, StringSplitOptions.None)
Show(result)
' Split the string and return all elements with whitespace trimmed
Console.WriteLine("2b) Return all elements with whitespace trimmed:")
result = s2.Split(stringSeparators, StringSplitOptions.TrimEntries)
Show(result)
' Split the string and return all non-empty elements
Console.WriteLine("2c) Return all non-empty elements:")
result = s2.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries)
Show(result)
' Split the string and return all non-whitespace elements with whitespace trimmed
Console.WriteLine("2d) Return all non-whitespace elements with whitespace trimmed:")
result = s2.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries Or StringSplitOptions.TrimEntries)
Show(result)
' Split the string into only two elements, keeping the remainder in the last match
Console.WriteLine("2e) Split into only two elements:")
result = s2.Split(stringSeparators, 2, StringSplitOptions.None)
Show(result)
' Split the string into only two elements with whitespace trimmed, keeping the remainder in the last match
Console.WriteLine("2f) Split into only two elements with whitespace trimmed:")
result = s2.Split(stringSeparators, 2, StringSplitOptions.TrimEntries)
Show(result)
' Split the string into only two non-empty elements, keeping the remainder in the last match
Console.WriteLine("2g) Split into only two non-empty elements:")
result = s2.Split(stringSeparators, 2, StringSplitOptions.RemoveEmptyEntries)
Show(result)
' Split the string into only two non-whitespace elements with whitespace trimmed, keeping the remainder in the last match
Console.WriteLine("2h) Split into only two non-whitespace elements with whitespace trimmed:")
result = s2.Split(stringSeparators, 2, StringSplitOptions.RemoveEmptyEntries Or StringSplitOptions.TrimEntries)
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:
'
' The original string is: ",ONE,, TWO,, , THREE,,".
' The delimiter character is: ','.
'
' 1a) Return all elements:
' The return value contains these 9 elements:
' <><ONE><>< TWO><>< >< THREE><><>
'
' 1b) Return all elements with whitespace trimmed:
' The return value contains these 9 elements:
' <><ONE><><TWO><><><THREE><><>
'
' 1c) Return all non-empty elements:
' The return value contains these 4 elements:
' <ONE>< TWO>< >< THREE>
'
' 1d) Return all non-whitespace elements with whitespace trimmed:
' The return value contains these 3 elements:
' <ONE><TWO><THREE>
'
' 1e) Split into only two elements:
' The return value contains these 2 elements:
' <><ONE,, TWO,, , THREE,,>
'
' 1f) Split into only two elements with whitespace trimmed:
' The return value contains these 2 elements:
' <><ONE,, TWO,, , THREE,,>
'
' 1g) Split into only two non-empty elements:
' The return value contains these 2 elements:
' <ONE>< TWO,, , THREE,,>
'
' 1h) Split into only two non-whitespace elements with whitespace trimmed:
' The return value contains these 2 elements:
' <ONE><TWO,, , THREE,,>
'
' 2) Split a string delimited by another string:
'
' The original string is: "[stop]ONE[stop] [stop]TWO [stop][stop] [stop]THREE[stop][stop] ".
' The delimiter string is: "[stop]".
'
' 2a) Return all elements:
' The return value contains these 9 elements:
' <><ONE>< ><TWO ><>< ><THREE><>< >
'
' 2b) Return all elements with whitespace trimmed:
' The return value contains these 9 elements:
' <><ONE><><TWO><><><THREE><><>
'
' 2c) Return all non-empty elements:
' The return value contains these 6 elements:
' <ONE>< ><TWO >< ><THREE>< >
'
' 2d) Return all non-whitespace elements with whitespace trimmed:
' The return value contains these 3 elements:
' <ONE><TWO><THREE>
'
' 2e) Split into only two elements:
' The return value contains these 2 elements:
' <><ONE[stop] [stop]TWO [stop][stop] [stop]THREE[stop][stop] >
'
' 2f) Split into only two elements with whitespace trimmed:
' The return value contains these 2 elements:
' <><ONE[stop] [stop]TWO [stop][stop] [stop]THREE[stop][stop]>
'
' 2g) Split into only two non-empty elements:
' The return value contains these 2 elements:
' <ONE>< [stop]TWO [stop][stop] [stop]THREE[stop][stop] >
'
' 2h) Split into only two non-whitespace elements with whitespace trimmed:
' The return value contains these 2 elements:
' <ONE><TWO [stop][stop] [stop]THREE[stop][stop]>
'
Uwagi
Ciągi ograniczników nie są uwzględniane w elementach zwracanej tablicy.
Jeśli to wystąpienie nie zawiera żadnych ciągów w separator
, lub parametr count
wynosi 1, zwracana tablica składa się z jednego elementu zawierającego to wystąpienie.
Jeśli parametr separator
jest null
lub nie zawiera znaków, przyjmuje się, że znaki odstępu są ogranicznikami. Znaki odstępu są definiowane przez standard Unicode, a metoda Char.IsWhiteSpace zwraca true
, jeśli są one przekazywane do niego.
Aby przekazać null
dla parametru string[] separator
, należy wskazać typ null
, aby uściślić wywołanie z innych przeciążeń, takich jak Split(Char[], Int32, StringSplitOptions). Poniższy przykład przedstawia kilka sposobów jednoznacznego identyfikowania tego przeciążenia.
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);
let phrase = "The quick brown fox"
phrase.Split(Unchecked.defaultof<string[]>, 3, StringSplitOptions.RemoveEmptyEntries) |> ignore
phrase.Split(null :> string[], 3, StringSplitOptions.RemoveEmptyEntries) |> ignore
phrase.Split((null: string[]), 3, StringSplitOptions.RemoveEmptyEntries) |> ignore
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)
Jeśli parametr count
ma wartość zero lub parametr options
jest RemoveEmptyEntries, a długość tego wystąpienia wynosi zero, zwracana jest pusta tablica.
Każdy element separator
definiuje oddzielny ogranicznik składający się z co najmniej jednego znaku. Jeśli parametr options
jest None, a dwa ograniczniki są sąsiadujące lub ogranicznik zostanie znaleziony na początku lub na końcu tego wystąpienia odpowiedni element tablicy zawiera Empty.
Jeśli w tym wystąpieniu istnieje więcej niż count
podciągów, pierwsze count
minus 1 podciągy są zwracane w pierwszym count
minus 1 elementy wartości zwracanej, a pozostałe znaki w tym wystąpieniu są zwracane w ostatnim elemenie wartości zwracanej.
Jeśli count
jest większa niż liczba podciągów, dostępne podciągy są zwracane i nie jest zgłaszany żaden wyjątek.
Tablica separatorów
Jeśli którykolwiek z elementów w separator
składa się z wielu znaków, cały podciąg jest uważany za ogranicznik. Jeśli na przykład jeden z elementów w separator
to "10", próba podzielenia ciągu "This10is10a10string". zwraca następującą tablicę z czterema elementami: { "This", "is", "a", "string". }.
Szczegóły porównania
Metoda Split wyodrębnia podciągi w tym ciągu rozdzielonym przez co najmniej jeden ciąg w parametrze separator
i zwraca te podciągi jako elementy tablicy.
Metoda Split wyszukuje ograniczniki, wykonując porównania przy użyciu reguł sortowania z uwzględnieniem wielkości liter. Aby uzyskać więcej informacji na temat sortowania wyrazów, ciągów i porządkowych, zobacz wyliczenie System.Globalization.CompareOptions.
Metoda Split ignoruje dowolny element separator
, którego wartość jest null
lub pusty ciąg ("").
Aby uniknąć niejednoznacznych wyników, gdy ciągi w separator
mają wspólne znaki, metoda Split przechodzi od początku do końca wartości wystąpienia i pasuje do pierwszego elementu w separator
, który jest równy ogranicznikowi w wystąpieniu. Kolejność napotkania podciągów w wystąpieniu ma pierwszeństwo przed kolejnością elementów w separator
.
Rozważmy na przykład wystąpienie, którego wartość to "abcdef". Jeśli pierwszy element w separator
to "ef", a drugi element to "bcde", wynikiem operacji podziału będzie "a" i "f". Dzieje się tak, ponieważ podciąg w wystąpieniu "bcde" jest napotykany i pasuje do elementu w separator
przed napotkaniem podciągu "f".
Jeśli jednak pierwszy element separator
był "bcd", a drugi element to "bc", wynikiem operacji podziału będzie "a" i "ef". Jest to spowodowane tym, że "bcd" jest pierwszym ogranicznikiem w separator
, który pasuje do ogranicznika w wystąpieniu. Jeśli kolejność separatorów została odwrócona, więc pierwszy element to "bc", a drugi element to "bcd", wynikiem będzie "a" i "def".
Zagadnienia dotyczące wydajności
Metody Split przydzielają pamięć dla zwróconego obiektu tablicy i obiektu String dla każdego elementu tablicy. Jeśli aplikacja wymaga optymalnej wydajności lub jeśli zarządzanie alokacją pamięci ma krytyczne znaczenie w aplikacji, rozważ użycie metody IndexOf lub IndexOfAny i opcjonalnie metody Compare, aby zlokalizować podciąg w ciągu.
Jeśli dzielisz ciąg na znak separatora, użyj metody IndexOf lub IndexOfAny, aby zlokalizować znak separatora w ciągu. Jeśli dzielisz ciąg w ciągu separatora, użyj metody IndexOf lub IndexOfAny, aby zlokalizować pierwszy znak ciągu separatora. Następnie użyj metody Compare, aby określić, czy znaki po tym pierwszym znaku są równe pozostałym znakom ciągu separatora.
Ponadto jeśli ten sam zestaw znaków jest używany do dzielenia ciągów w wielu wywołaniach metody Split, rozważ utworzenie pojedynczej tablicy i odwołanie do niej w każdym wywołaniu metody. Znacznie zmniejsza to dodatkowe obciążenie każdego wywołania metody.
Uwagi dotyczące wywoływania
W programie .NET Framework 3.5 i starszych wersjach, jeśli metoda Split(Char[]) została przekazana separator
, która jest null
lub nie zawiera znaków, metoda używa nieco innego zestawu znaków odstępu, aby podzielić ciąg niż metoda Trim(Char[]), aby przyciąć ciąg. Począwszy od programu .NET Framework 4, obie metody używają identycznego zestawu znaków odstępów Unicode.
Dotyczy
Split(Char[], StringSplitOptions)
- Źródło:
- String.Manipulation.cs
- Źródło:
- String.Manipulation.cs
- Źródło:
- String.Manipulation.cs
Dzieli ciąg na podciągi na podstawie określonych ograniczeń i opcji.
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()
Parametry
- separator
- Char[]
Tablica znaków rozdzielających podciągi w tym ciągu, pustą tablicę, która nie zawiera ograniczników lub null
.
- options
- StringSplitOptions
Bitowa kombinacja wartości wyliczenia, która określa, czy przycinać podciągy i uwzględniać puste podciągy.
Zwraca
Tablica, której elementy zawierają podciągi w tym ciągu rozdzielane co najmniej jednym znakiem w separator
. Aby uzyskać więcej informacji, zobacz sekcję Uwagi.
- Atrybuty
Wyjątki
options
nie jest jedną z wartości StringSplitOptions.
Przykłady
W poniższym przykładzie użyto wyliczenia StringSplitOptions do uwzględnienia lub wykluczenia podciągów wygenerowanych przez metodę Split.
// 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.
// Example 1: Split a string delimited by characters
Console.WriteLine("1) Split a string delimited by characters:\n");
string s1 = ",ONE,, TWO,, , THREE,,";
char[] charSeparators = new char[] { ',' };
string[] result;
Console.WriteLine($"The original string is: \"{s1}\".");
Console.WriteLine($"The delimiter character is: '{charSeparators[0]}'.\n");
// Split the string and return all elements
Console.WriteLine("1a) Return all elements:");
result = s1.Split(charSeparators, StringSplitOptions.None);
Show(result);
// Split the string and return all elements with whitespace trimmed
Console.WriteLine("1b) Return all elements with whitespace trimmed:");
result = s1.Split(charSeparators, StringSplitOptions.TrimEntries);
Show(result);
// Split the string and return all non-empty elements
Console.WriteLine("1c) Return all non-empty elements:");
result = s1.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries);
Show(result);
// Split the string and return all non-whitespace elements with whitespace trimmed
Console.WriteLine("1d) Return all non-whitespace elements with whitespace trimmed:");
result = s1.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
Show(result);
// Split the string into only two elements, keeping the remainder in the last match
Console.WriteLine("1e) Split into only two elements:");
result = s1.Split(charSeparators, 2, StringSplitOptions.None);
Show(result);
// Split the string into only two elements with whitespace trimmed, keeping the remainder in the last match
Console.WriteLine("1f) Split into only two elements with whitespace trimmed:");
result = s1.Split(charSeparators, 2, StringSplitOptions.TrimEntries);
Show(result);
// Split the string into only two non-empty elements, keeping the remainder in the last match
Console.WriteLine("1g) Split into only two non-empty elements:");
result = s1.Split(charSeparators, 2, StringSplitOptions.RemoveEmptyEntries);
Show(result);
// Split the string into only two non-whitespace elements with whitespace trimmed, keeping the remainder in the last match
Console.WriteLine("1h) Split into only two non-whitespace elements with whitespace trimmed:");
result = s1.Split(charSeparators, 2, StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
Show(result);
// Example 2: Split a string delimited by another string
Console.WriteLine("2) Split a string delimited by another string:\n");
string s2 = "[stop]" +
"ONE[stop] [stop]" +
"TWO [stop][stop] [stop]" +
"THREE[stop][stop] ";
string[] stringSeparators = new string[] { "[stop]" };
Console.WriteLine($"The original string is: \"{s2}\".");
Console.WriteLine($"The delimiter string is: \"{stringSeparators[0]}\".\n");
// Split the string and return all elements
Console.WriteLine("2a) Return all elements:");
result = s2.Split(stringSeparators, StringSplitOptions.None);
Show(result);
// Split the string and return all elements with whitespace trimmed
Console.WriteLine("2b) Return all elements with whitespace trimmed:");
result = s2.Split(stringSeparators, StringSplitOptions.TrimEntries);
Show(result);
// Split the string and return all non-empty elements
Console.WriteLine("2c) Return all non-empty elements:");
result = s2.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);
Show(result);
// Split the string and return all non-whitespace elements with whitespace trimmed
Console.WriteLine("2d) Return all non-whitespace elements with whitespace trimmed:");
result = s2.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
Show(result);
// Split the string into only two elements, keeping the remainder in the last match
Console.WriteLine("2e) Split into only two elements:");
result = s2.Split(stringSeparators, 2, StringSplitOptions.None);
Show(result);
// Split the string into only two elements with whitespace trimmed, keeping the remainder in the last match
Console.WriteLine("2f) Split into only two elements with whitespace trimmed:");
result = s2.Split(stringSeparators, 2, StringSplitOptions.TrimEntries);
Show(result);
// Split the string into only two non-empty elements, keeping the remainder in the last match
Console.WriteLine("2g) Split into only two non-empty elements:");
result = s2.Split(stringSeparators, 2, StringSplitOptions.RemoveEmptyEntries);
Show(result);
// Split the string into only two non-whitespace elements with whitespace trimmed, keeping the remainder in the last match
Console.WriteLine("2h) Split into only two non-whitespace elements with whitespace trimmed:");
result = s2.Split(stringSeparators, 2, StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
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:
The original string is: ",ONE,, TWO,, , THREE,,".
The delimiter character is: ','.
1a) Return all elements:
The return value contains these 9 elements:
<><ONE><>< TWO><>< >< THREE><><>
1b) Return all elements with whitespace trimmed:
The return value contains these 9 elements:
<><ONE><><TWO><><><THREE><><>
1c) Return all non-empty elements:
The return value contains these 4 elements:
<ONE>< TWO>< >< THREE>
1d) Return all non-whitespace elements with whitespace trimmed:
The return value contains these 3 elements:
<ONE><TWO><THREE>
1e) Split into only two elements:
The return value contains these 2 elements:
<><ONE,, TWO,, , THREE,,>
1f) Split into only two elements with whitespace trimmed:
The return value contains these 2 elements:
<><ONE,, TWO,, , THREE,,>
1g) Split into only two non-empty elements:
The return value contains these 2 elements:
<ONE>< TWO,, , THREE,,>
1h) Split into only two non-whitespace elements with whitespace trimmed:
The return value contains these 2 elements:
<ONE><TWO,, , THREE,,>
2) Split a string delimited by another string:
The original string is: "[stop]ONE[stop] [stop]TWO [stop][stop] [stop]THREE[stop][stop] ".
The delimiter string is: "[stop]".
2a) Return all elements:
The return value contains these 9 elements:
<><ONE>< ><TWO ><>< ><THREE><>< >
2b) Return all elements with whitespace trimmed:
The return value contains these 9 elements:
<><ONE><><TWO><><><THREE><><>
2c) Return all non-empty elements:
The return value contains these 6 elements:
<ONE>< ><TWO >< ><THREE>< >
2d) Return all non-whitespace elements with whitespace trimmed:
The return value contains these 3 elements:
<ONE><TWO><THREE>
2e) Split into only two elements:
The return value contains these 2 elements:
<><ONE[stop] [stop]TWO [stop][stop] [stop]THREE[stop][stop] >
2f) Split into only two elements with whitespace trimmed:
The return value contains these 2 elements:
<><ONE[stop] [stop]TWO [stop][stop] [stop]THREE[stop][stop]>
2g) Split into only two non-empty elements:
The return value contains these 2 elements:
<ONE>< [stop]TWO [stop][stop] [stop]THREE[stop][stop] >
2h) Split into only two non-whitespace elements with whitespace trimmed:
The return value contains these 2 elements:
<ONE><TWO [stop][stop] [stop]THREE[stop][stop]>
*/
// This example demonstrates the String.Split() methods that use
// the StringSplitOptions enumeration.
// Display the array of separated strings using a local function
let show (entries: string[]) =
printfn $"The return value contains these {entries.Length} elements:"
for entry in entries do
printf $"<{entry}>"
printf "\n\n"
// Example 1: Split a string delimited by characters
printfn "1) Split a string delimited by characters:\n"
let s1 = ",ONE,, TWO,, , THREE,,"
let charSeparators = [| ',' |]
printfn $"The original string is: \"{s1}\"."
printfn $"The delimiter character is: '{charSeparators[0]}'.\n"
// Split the string and return all elements
printfn "1a) Return all elements:"
let result = s1.Split(charSeparators, StringSplitOptions.None)
show result
// Split the string and return all elements with whitespace trimmed
printfn "1b) Return all elements with whitespace trimmed:"
let result = s1.Split(charSeparators, StringSplitOptions.TrimEntries)
show result
// Split the string and return all non-empty elements
printfn "1c) Return all non-empty elements:"
let result = s1.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries)
show result
// Split the string and return all non-whitespace elements with whitespace trimmed
printfn "1d) Return all non-whitespace elements with whitespace trimmed:"
let result = s1.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries ||| StringSplitOptions.TrimEntries)
show result
// Split the string into only two elements, keeping the remainder in the last match
printfn "1e) Split into only two elements:"
let result = s1.Split(charSeparators, 2, StringSplitOptions.None)
show result
// Split the string into only two elements with whitespace trimmed, keeping the remainder in the last match
printfn "1f) Split into only two elements with whitespace trimmed:"
let result = s1.Split(charSeparators, 2, StringSplitOptions.TrimEntries)
show result
// Split the string into only two non-empty elements, keeping the remainder in the last match
printfn "1g) Split into only two non-empty elements:"
let result = s1.Split(charSeparators, 2, StringSplitOptions.RemoveEmptyEntries)
show result
// Split the string into only two non-whitespace elements with whitespace trimmed, keeping the remainder in the last match
printfn "1h) Split into only two non-whitespace elements with whitespace trimmed:"
let result = s1.Split(charSeparators, 2, StringSplitOptions.RemoveEmptyEntries ||| StringSplitOptions.TrimEntries)
show result
// Example 2: Split a string delimited by another string
printfn "2) Split a string delimited by another string:\n"
let s2 = "[stop]" +
"ONE[stop] [stop]" +
"TWO [stop][stop] [stop]" +
"THREE[stop][stop] "
let stringSeparators = [| "[stop]" |]
printfn $"The original string is: \"{s2}\"."
printfn $"The delimiter string is: \"{stringSeparators[0]}\".\n"
// Split the string and return all elements
printfn "2a) Return all elements:"
let result = s2.Split(stringSeparators, StringSplitOptions.None)
show result
// Split the string and return all elements with whitespace trimmed
printfn "2b) Return all elements with whitespace trimmed:"
let result = s2.Split(stringSeparators, StringSplitOptions.TrimEntries)
show result
// Split the string and return all non-empty elements
printfn "2c) Return all non-empty elements:"
let result = s2.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries)
show result
// Split the string and return all non-whitespace elements with whitespace trimmed
printfn "2d) Return all non-whitespace elements with whitespace trimmed:"
let result = s2.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries ||| StringSplitOptions.TrimEntries)
show result
// Split the string into only two elements, keeping the remainder in the last match
printfn "2e) Split into only two elements:"
let result = s2.Split(stringSeparators, 2, StringSplitOptions.None)
show result
// Split the string into only two elements with whitespace trimmed, keeping the remainder in the last match
printfn "2f) Split into only two elements with whitespace trimmed:"
let result = s2.Split(stringSeparators, 2, StringSplitOptions.TrimEntries)
show result
// Split the string into only two non-empty elements, keeping the remainder in the last match
printfn "2g) Split into only two non-empty elements:"
let result = s2.Split(stringSeparators, 2, StringSplitOptions.RemoveEmptyEntries)
show result
// Split the string into only two non-whitespace elements with whitespace trimmed, keeping the remainder in the last match
printfn "2h) Split into only two non-whitespace elements with whitespace trimmed:"
let result = s2.Split(stringSeparators, 2, StringSplitOptions.RemoveEmptyEntries ||| StringSplitOptions.TrimEntries)
show result
(*
This example produces the following results:
1) Split a string delimited by characters:
The original string is: ",ONE,, TWO,, , THREE,,".
The delimiter character is: ','.
1a) Return all elements:
The return value contains these 9 elements:
<><ONE><>< TWO><>< >< THREE><><>
1b) Return all elements with whitespace trimmed:
The return value contains these 9 elements:
<><ONE><><TWO><><><THREE><><>
1c) Return all non-empty elements:
The return value contains these 4 elements:
<ONE>< TWO>< >< THREE>
1d) Return all non-whitespace elements with whitespace trimmed:
The return value contains these 3 elements:
<ONE><TWO><THREE>
1e) Split into only two elements:
The return value contains these 2 elements:
<><ONE,, TWO,, , THREE,,>
1f) Split into only two elements with whitespace trimmed:
The return value contains these 2 elements:
<><ONE,, TWO,, , THREE,,>
1g) Split into only two non-empty elements:
The return value contains these 2 elements:
<ONE>< TWO,, , THREE,,>
1h) Split into only two non-whitespace elements with whitespace trimmed:
The return value contains these 2 elements:
<ONE><TWO,, , THREE,,>
2) Split a string delimited by another string:
The original string is: "[stop]ONE[stop] [stop]TWO [stop][stop] [stop]THREE[stop][stop] ".
The delimiter string is: "[stop]".
2a) Return all elements:
The return value contains these 9 elements:
<><ONE>< ><TWO ><>< ><THREE><>< >
2b) Return all elements with whitespace trimmed:
The return value contains these 9 elements:
<><ONE><><TWO><><><THREE><><>
2c) Return all non-empty elements:
The return value contains these 6 elements:
<ONE>< ><TWO >< ><THREE>< >
2d) Return all non-whitespace elements with whitespace trimmed:
The return value contains these 3 elements:
<ONE><TWO><THREE>
2e) Split into only two elements:
The return value contains these 2 elements:
<><ONE[stop] [stop]TWO [stop][stop] [stop]THREE[stop][stop] >
2f) Split into only two elements with whitespace trimmed:
The return value contains these 2 elements:
<><ONE[stop] [stop]TWO [stop][stop] [stop]THREE[stop][stop]>
2g) Split into only two non-empty elements:
The return value contains these 2 elements:
<ONE>< [stop]TWO [stop][stop] [stop]THREE[stop][stop] >
2h) Split into only two non-whitespace elements with whitespace trimmed:
The return value contains these 2 elements:
<ONE><TWO [stop][stop] [stop]THREE[stop][stop]>
*)
Public Shared Sub StringSplitOptionsExamples()
' This example demonstrates the String.Split() methods that use
' the StringSplitOptions enumeration.
' Example 1: Split a string delimited by characters
Console.WriteLine("1) Split a string delimited by characters:" & vbCrLf)
Dim s1 As String = ",ONE,, TWO,, , THREE,,"
Dim charSeparators() As Char = {","c}
Dim result() As String
Console.WriteLine("The original string is: ""{0}"".", s1)
Console.WriteLine("The delimiter character is: '{0}'." & vbCrLf, charSeparators(0))
' Split the string and return all elements
Console.WriteLine("1a) Return all elements:")
result = s1.Split(charSeparators, StringSplitOptions.None)
Show(result)
' Split the string and return all elements with whitespace trimmed
Console.WriteLine("1b) Return all elements with whitespace trimmed:")
result = s1.Split(charSeparators, StringSplitOptions.TrimEntries)
Show(result)
' Split the string and return all non-empty elements
Console.WriteLine("1c) Return all non-empty elements:")
result = s1.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries)
Show(result)
' Split the string and return all non-whitespace elements with whitespace trimmed
Console.WriteLine("1d) Return all non-whitespace elements with whitespace trimmed:")
result = s1.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries Or StringSplitOptions.TrimEntries)
Show(result)
' Split the string into only two elements, keeping the remainder in the last match
Console.WriteLine("1e) Split into only two elements:")
result = s1.Split(charSeparators, 2, StringSplitOptions.None)
Show(result)
' Split the string into only two elements with whitespace trimmed, keeping the remainder in the last match
Console.WriteLine("1f) Split into only two elements with whitespace trimmed:")
result = s1.Split(charSeparators, 2, StringSplitOptions.TrimEntries)
Show(result)
' Split the string into only two non-empty elements, keeping the remainder in the last match
Console.WriteLine("1g) Split into only two non-empty elements:")
result = s1.Split(charSeparators, 2, StringSplitOptions.RemoveEmptyEntries)
Show(result)
' Split the string into only two non-whitespace elements with whitespace trimmed, keeping the remainder in the last match
Console.WriteLine("1h) Split into only two non-whitespace elements with whitespace trimmed:")
result = s1.Split(charSeparators, 2, StringSplitOptions.RemoveEmptyEntries Or StringSplitOptions.TrimEntries)
Show(result)
' Example 2: Split a string delimited by another string
Console.WriteLine("2) Split a string delimited by another string:" & vbCrLf)
Dim s2 As String = "[stop]" +
"ONE[stop] [stop]" +
"TWO [stop][stop] [stop]" +
"THREE[stop][stop] "
Dim stringSeparators() As String = {"[stop]"}
Console.WriteLine("The original string is: ""{0}"".", s2)
Console.WriteLine("The delimiter string is: ""{0}""." & vbCrLf, stringSeparators(0))
' Split the string and return all elements
Console.WriteLine("2a) Return all elements:")
result = s2.Split(stringSeparators, StringSplitOptions.None)
Show(result)
' Split the string and return all elements with whitespace trimmed
Console.WriteLine("2b) Return all elements with whitespace trimmed:")
result = s2.Split(stringSeparators, StringSplitOptions.TrimEntries)
Show(result)
' Split the string and return all non-empty elements
Console.WriteLine("2c) Return all non-empty elements:")
result = s2.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries)
Show(result)
' Split the string and return all non-whitespace elements with whitespace trimmed
Console.WriteLine("2d) Return all non-whitespace elements with whitespace trimmed:")
result = s2.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries Or StringSplitOptions.TrimEntries)
Show(result)
' Split the string into only two elements, keeping the remainder in the last match
Console.WriteLine("2e) Split into only two elements:")
result = s2.Split(stringSeparators, 2, StringSplitOptions.None)
Show(result)
' Split the string into only two elements with whitespace trimmed, keeping the remainder in the last match
Console.WriteLine("2f) Split into only two elements with whitespace trimmed:")
result = s2.Split(stringSeparators, 2, StringSplitOptions.TrimEntries)
Show(result)
' Split the string into only two non-empty elements, keeping the remainder in the last match
Console.WriteLine("2g) Split into only two non-empty elements:")
result = s2.Split(stringSeparators, 2, StringSplitOptions.RemoveEmptyEntries)
Show(result)
' Split the string into only two non-whitespace elements with whitespace trimmed, keeping the remainder in the last match
Console.WriteLine("2h) Split into only two non-whitespace elements with whitespace trimmed:")
result = s2.Split(stringSeparators, 2, StringSplitOptions.RemoveEmptyEntries Or StringSplitOptions.TrimEntries)
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:
'
' The original string is: ",ONE,, TWO,, , THREE,,".
' The delimiter character is: ','.
'
' 1a) Return all elements:
' The return value contains these 9 elements:
' <><ONE><>< TWO><>< >< THREE><><>
'
' 1b) Return all elements with whitespace trimmed:
' The return value contains these 9 elements:
' <><ONE><><TWO><><><THREE><><>
'
' 1c) Return all non-empty elements:
' The return value contains these 4 elements:
' <ONE>< TWO>< >< THREE>
'
' 1d) Return all non-whitespace elements with whitespace trimmed:
' The return value contains these 3 elements:
' <ONE><TWO><THREE>
'
' 1e) Split into only two elements:
' The return value contains these 2 elements:
' <><ONE,, TWO,, , THREE,,>
'
' 1f) Split into only two elements with whitespace trimmed:
' The return value contains these 2 elements:
' <><ONE,, TWO,, , THREE,,>
'
' 1g) Split into only two non-empty elements:
' The return value contains these 2 elements:
' <ONE>< TWO,, , THREE,,>
'
' 1h) Split into only two non-whitespace elements with whitespace trimmed:
' The return value contains these 2 elements:
' <ONE><TWO,, , THREE,,>
'
' 2) Split a string delimited by another string:
'
' The original string is: "[stop]ONE[stop] [stop]TWO [stop][stop] [stop]THREE[stop][stop] ".
' The delimiter string is: "[stop]".
'
' 2a) Return all elements:
' The return value contains these 9 elements:
' <><ONE>< ><TWO ><>< ><THREE><>< >
'
' 2b) Return all elements with whitespace trimmed:
' The return value contains these 9 elements:
' <><ONE><><TWO><><><THREE><><>
'
' 2c) Return all non-empty elements:
' The return value contains these 6 elements:
' <ONE>< ><TWO >< ><THREE>< >
'
' 2d) Return all non-whitespace elements with whitespace trimmed:
' The return value contains these 3 elements:
' <ONE><TWO><THREE>
'
' 2e) Split into only two elements:
' The return value contains these 2 elements:
' <><ONE[stop] [stop]TWO [stop][stop] [stop]THREE[stop][stop] >
'
' 2f) Split into only two elements with whitespace trimmed:
' The return value contains these 2 elements:
' <><ONE[stop] [stop]TWO [stop][stop] [stop]THREE[stop][stop]>
'
' 2g) Split into only two non-empty elements:
' The return value contains these 2 elements:
' <ONE>< [stop]TWO [stop][stop] [stop]THREE[stop][stop] >
'
' 2h) Split into only two non-whitespace elements with whitespace trimmed:
' The return value contains these 2 elements:
' <ONE><TWO [stop][stop] [stop]THREE[stop][stop]>
'
Uwagi
Znaki ogranicznika (znaki w tablicy separator
) nie są uwzględniane w elementach zwracanej tablicy. Jeśli na przykład tablica separator
zawiera znak "-", a wartość bieżącego wystąpienia ciągu to "aa-bb-cc", metoda zwraca tablicę zawierającą trzy elementy: "aa", "bb" i "cc".
Jeśli to wystąpienie nie zawiera żadnych znaków w separator
, zwracana tablica składa się z jednego elementu zawierającego to wystąpienie.
Jeśli parametr options
jest RemoveEmptyEntries, a długość tego wystąpienia wynosi zero, metoda zwraca pustą tablicę.
Każdy element separator
definiuje oddzielny ogranicznik składający się z jednego znaku. Jeśli argument options
jest None, a dwa ograniczniki sąsiadują lub ogranicznik znajduje się na początku lub na końcu tego wystąpienia odpowiedni element tablicy zawiera String.Empty. Jeśli na przykład separator
zawiera dwa elementy, '-'
i '_'
wartość wystąpienia ciągu to "-_aa-_", a wartość argumentu options
jest None, metoda zwraca tablicę ciągów z następującymi pięcioma elementami:
String.Empty, która reprezentuje pusty ciąg poprzedzający znak "-" w indeksie 0.
String.Empty, która reprezentuje pusty ciąg między znakiem "-" w indeksie 0 i znakiem "_" w indeksie 1.
"aa".
String.Empty, który reprezentuje pusty ciąg, który jest zgodny z znakiem "-" w indeksie 4.
String.Empty, który reprezentuje pusty ciąg, który jest zgodny z znakiem "_" w indeksie 5.
Tablica separatorów
Jeśli parametr separator
jest null
lub nie zawiera znaków, przyjmuje się, że znaki odstępu są ogranicznikami. Znaki odstępu są definiowane przez standard Unicode, a metoda Char.IsWhiteSpace zwraca true
, jeśli są one przekazywane do niego.
Aby przekazać null
dla parametru char[] separator
, należy wskazać typ null
, aby uściślić wywołanie z innych przeciążeń, takich jak Split(String[], StringSplitOptions). Poniższy przykład przedstawia kilka sposobów jednoznacznego identyfikowania tego przeciążenia.
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);
let phrase = "The quick brown fox"
phrase.Split(Unchecked.defaultof<char[]>, StringSplitOptions.RemoveEmptyEntries) |> ignore
phrase.Split(null :> char[], StringSplitOptions.RemoveEmptyEntries) |> ignore
phrase.Split((null: char[]), StringSplitOptions.RemoveEmptyEntries) |> ignore
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)
Szczegóły porównania
Metoda Split wyodrębnia podciągi w tym ciągu rozdzielonym przez co najmniej jeden znak w parametrze separator
i zwraca te podciągi jako elementy tablicy.
Metoda Split wyszukuje ograniczniki, wykonując porównania przy użyciu reguł sortowania z uwzględnieniem wielkości liter. Aby uzyskać więcej informacji na temat sortowania wyrazów, ciągów i porządkowych, zobacz wyliczenie System.Globalization.CompareOptions.
Zagadnienia dotyczące wydajności
Metody Split przydzielają pamięć dla zwróconego obiektu tablicy i obiektu String dla każdego elementu tablicy. Jeśli aplikacja wymaga optymalnej wydajności lub jeśli zarządzanie alokacją pamięci ma krytyczne znaczenie w aplikacji, rozważ użycie metody IndexOf lub IndexOfAny i opcjonalnie metody Compare, aby zlokalizować podciąg w ciągu.
Jeśli dzielisz ciąg na znak separatora, użyj metody IndexOf lub IndexOfAny, aby zlokalizować znak separatora w ciągu. Jeśli dzielisz ciąg w ciągu separatora, użyj metody IndexOf lub IndexOfAny, aby zlokalizować pierwszy znak ciągu separatora. Następnie użyj metody Compare, aby określić, czy znaki po tym pierwszym znaku są równe pozostałym znakom ciągu separatora.
Ponadto jeśli ten sam zestaw znaków jest używany do dzielenia ciągów w wielu wywołaniach metody Split, rozważ utworzenie pojedynczej tablicy i odwołanie do niej w każdym wywołaniu metody. Znacznie zmniejsza to dodatkowe obciążenie każdego wywołania metody.
Uwagi dotyczące wywoływania
W programie .NET Framework 3.5 i starszych wersjach, jeśli metoda Split(Char[]) została przekazana separator
, która jest null
lub nie zawiera znaków, metoda używa nieco innego zestawu znaków odstępu, aby podzielić ciąg niż metoda Trim(Char[]), aby przyciąć ciąg. Począwszy od programu .NET Framework 4, obie metody używają identycznego zestawu znaków odstępów Unicode.