String.Split Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Devolve um array de strings que contém as substrings neste caso delimitadas por elementos de uma string específica ou array de caracteres Unicode.
Sobrecargas
| Name | Description |
|---|---|
| Split(Rune, StringSplitOptions) | |
| Split(String[], Int32, StringSplitOptions) |
Divide uma cadeia num número máximo de subcadeias com base em cadeias delimitadoras especificadas e, opcionalmente, opções. |
| Split(Rune, Int32, StringSplitOptions) | |
| Split(Char[], Int32, StringSplitOptions) |
Divide uma cadeia num número máximo de subcadeias com base em caracteres delimitadores especificados e, opcionalmente, opções. |
| Split(Char, Int32, StringSplitOptions) |
Divide uma cadeia num número máximo de subcadeias com base no separador de caracteres fornecido, omitindo opcionalmente subcadeias vazias do resultado. |
| Split(String[], StringSplitOptions) |
Divide uma cadeia em subcadeias com base numa cadeia delimitadora especificada e, opcionalmente, opções. |
| Split(String, Int32, StringSplitOptions) |
Divide uma cadeia num número máximo de subcadeias com base numa cadeia delimitadora especificada e, opcionalmente, opções. |
| Split(Char[], StringSplitOptions) |
Divide uma cadeia em substrings com base em caracteres e opções delimitadoras especificados. |
| Split(Char[], Int32) |
Divide uma cadeia num número máximo de subcadeias com base em caracteres delimitadores especificados. |
| Split(Char, StringSplitOptions) |
Divide uma cadeia em subcadeias com base num carácter delimitador especificado e, opcionalmente, em opções. |
| Split(ReadOnlySpan<Char>) |
Divide uma cadeia em subcadeias com base em caracteres delimitadores especificados. |
| Split(Char[]) |
Divide uma cadeia em subcadeias com base em caracteres delimitadores especificados. |
| Split(String, StringSplitOptions) |
Divide uma cadeia em subcadeias que se baseiam no separador de cordas fornecido. |
Observações
Split é usado para quebrar uma corda delimitada em subcordas. Pode usar um array de caracteres ou um array de strings para especificar zero ou mais caracteres ou strings delimitadores. Se não forem especificados caracteres delimitadores, a cadeia é dividida em espaços em branco.
As sobrecargas do Split método permitem limitar o número de substrings devolvidas pelo método (o Split(Char[], Int32) método), especificar se deve incluir cadeias vazias e/ou cortar substrings no resultado (os Split(Char[], StringSplitOptions) métodos e), Split(String[], StringSplitOptions) ou fazer ambos (os Split(Char[], Int32, StringSplitOptions) métodos e Split(String[], Int32, StringSplitOptions) ).
Tip
O Split método nem sempre é a melhor forma de quebrar uma cadeia delimitada em subcordas. Se não quiseres extrair todas as substrings de uma cadeia delimitada, ou se quiseres analisar uma cadeia com base num padrão em vez de um conjunto de caracteres delimitadores, considera usar expressões regulares, ou combinar um dos métodos de pesquisa que devolvem o índice de um carácter com o Substring método. Para mais informações, veja Extrair substrings de uma string.
Example
Os exemplos a seguir mostram três sobrecargas diferentes de String.Split(). O primeiro exemplo chama a Split(Char[]) sobrecarga e passa um único delimitador.
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.
Como você pode ver, os caracteres de ponto (.) estão incluídos em duas das substrings. Se quiser excluir os caracteres de período, você pode adicionar o caractere de ponto como um caractere delimitador adicional. O próximo exemplo mostra como fazer isso.
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:
Os períodos desapareceram das substrings, mas agora duas substrings vazias extras foram incluídas. Estas subcadeias vazias representam a subcadeia entre uma palavra e o período que a segue. Para omitir substrings vazias da matriz resultante, você pode chamar a Split(Char[], StringSplitOptions) sobrecarga e especificar StringSplitOptions.RemoveEmptyEntries para o options parâmetro.
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
As secções para as sobrecargas individuais de String.Split() contêm exemplos adicionais.
Split(Rune, StringSplitOptions)
- Origem:
- String.Manipulation.cs
public string[] Split(System.Text.Rune separator, StringSplitOptions options = System.StringSplitOptions.None);
member this.Split : System.Text.Rune * StringSplitOptions -> string[]
Public Function Split (separator As Rune, Optional options As StringSplitOptions = System.StringSplitOptions.None) As String()
Parâmetros
- separator
- Rune
- options
- StringSplitOptions
Devoluções
Aplica-se a
Split(String[], Int32, StringSplitOptions)
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
Divide uma cadeia num número máximo de subcadeias com base em cadeias delimitadoras especificadas e, opcionalmente, opções.
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()
Parâmetros
- separator
- String[]
As cadeias que delimitam as subcadeias desta cadeia, um array vazio que não contém delimitadores, ou null.
- count
- Int32
O número máximo de substrings a retornar.
- options
- StringSplitOptions
Uma combinação binária dos valores da enumeração que especifica se devem ser removidos os espaços em branco no início e no fim das subcadeias e se devem ser incluídas subcadeias vazias.
Devoluções
Um array cujos elementos contêm as subcadeias nesta cadeia que são delimitadas por uma ou mais cadeias em separator. Para obter mais informações, consulte a seção Observações.
- Atributos
Exceções
count é negativo.
options não é um dos valores StringSplitOptions .
Exemplos
O exemplo seguinte utiliza a StringSplitOptions enumeração para incluir ou excluir substrings geradas pelo Split método.
// 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]>
'
Observações
As cadeias delimitadoras não estão incluídas nos elementos do array devolvido.
Se esta instância não contiver nenhuma das cadeias em separator, ou o count parâmetro for 1, o array devolvido consiste num único elemento que contém esta instância.
Se o separator parâmetro não for null ou não contiver caracteres, assume-se que os caracteres de espaço em branco são os delimitadores. Os caracteres de espaço em branco são definidos pelo padrão Unicode e o Char.IsWhiteSpace método devolve true se forem passados para ele.
Para passar null para o string[] separator parâmetro, deve indicar o tipo de para null desambiguar a chamada de algumas outras sobrecargas, como Split(Char[], Int32, StringSplitOptions). O exemplo seguinte mostra várias formas de identificar esta sobrecarga de forma inequívoca.
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)
Se o count parâmetro for zero, ou se o options parâmetro for RemoveEmptyEntries e o comprimento desta instância for zero, é devolvido um array vazio.
Cada elemento de separator define um delimitador separado que consiste em um ou mais caracteres. Se o options parâmetro for None, e dois delimitadores forem adjacentes ou se encontrar um delimitador no início ou no fim desta instância, o elemento correspondente do array contém Empty.
Se existirem mais de count substrings neste caso, as primeiras count substrings menos 1 são devolvidas nos primeiros count elementos menos 1 do valor de retorno, e os caracteres restantes neste caso são devolvidos no último elemento do valor de retorno.
Se count for maior do que o número de substrings, as substrings disponíveis são devolvidas e não é lançada nenhuma exceção.
A matriz de separadores
Se algum dos elementos em separator consiste em múltiplos caracteres, toda a subcadeia é considerada um delimitador. Por exemplo, se um dos elementos em separator for "10", ao tentar dividir a cadeia "This10is10a10string." devolve este array de quatro elementos: { "This", "is", "a", "string." }.
Detalhes da comparação
O Split método extrai as substrings desta string que são delimitadas por uma ou mais strings no separator parâmetro e devolve essas substrings como elementos de um array.
O Split método procura delimitadores realizando comparações usando regras de ordenação ordinal sensíveis a maiúsculas minúsculas. Para mais informações sobre ordenações de palavras, cadeias e ordinais, consulte a System.Globalization.CompareOptions enumeração.
O Split método ignora qualquer elemento de separator cujo valor seja null ou a cadeia vazia ("").
Para evitar resultados ambíguos quando as cadeias em separator têm caracteres em comum, o Split método procede do início ao fim do valor da instância, e corresponde ao primeiro elemento em separator que é igual a um delimitador na instância. A ordem em que as substrings são encontradas na instância tem precedência sobre a ordem dos elementos em separator.
Por exemplo, considere uma instância cujo valor é "abcdef". Se o primeiro elemento fosse separator "ef" e o segundo elemento fosse "bcde", o resultado da operação de divisão seria "a" e "f". Isto deve-se ao facto de a subcadeia na instância "bcde" ser encontrada e corresponder a um elemento em separator antes de a subcadeia "f" ser encontrada.
No entanto, se o primeiro elemento de separator fosse "bcd" e o segundo elemento fosse "bc", o resultado da operação de divisão seria "a" e "ef". Isto porque "bcd" é o primeiro delimitador que separator corresponde a um delimitador na instância. Se a ordem dos separadores fosse invertida, de modo que o primeiro elemento fosse "bc" e o segundo elemento fosse "bcd", o resultado seria "a" e "def".
Considerações sobre desempenho
Os Split métodos alocam memória para o objeto do array devolvido e um String objeto para cada elemento do array. Se a sua aplicação requer desempenho ótimo ou se a gestão da alocação de memória for crítica na sua aplicação, considere usar o IndexOf método ou IndexOfAny , e opcionalmente o Compare método, para localizar uma substring dentro de uma string.
Se estiver a separar uma cadeia num carácter separador, use o IndexOf método ou IndexOfAny para localizar um carácter separador na cadeia. Se estiver a dividir uma cadeia numa cadeia separadora, use o IndexOf método ou IndexOfAny para localizar o primeiro carácter da cadeia separadora. Depois, use o Compare método para determinar se os caracteres após esse primeiro carácter são iguais aos caracteres restantes da cadeia separadora.
Além disso, se o mesmo conjunto de caracteres for usado para dividir cadeias em múltiplas Split chamadas de método, considere criar um único array e referenciá-lo em cada chamada de método. Isto reduz significativamente a sobrecarga adicional de cada chamada de método.
Notas para Chamadores
No .NET Framework 3.5 e versões anteriores, se o método Split(Char[]) receber um separator que é null ou não contém caracteres, o método usa um conjunto ligeiramente diferente de espaços em branco para dividir a cadeia do que o método Trim(Char[]) faz para cortar a cadeia. Começando com o .NET Framework 4, ambos os métodos utilizam um conjunto idêntico de caracteres de espaço em branco Unicode.
Aplica-se a
Split(Rune, Int32, StringSplitOptions)
- Origem:
- String.Manipulation.cs
public string[] Split(System.Text.Rune separator, int count, StringSplitOptions options = System.StringSplitOptions.None);
member this.Split : System.Text.Rune * int * StringSplitOptions -> string[]
Public Function Split (separator As Rune, count As Integer, Optional options As StringSplitOptions = System.StringSplitOptions.None) As String()
Parâmetros
- separator
- Rune
- count
- Int32
- options
- StringSplitOptions
Devoluções
Aplica-se a
Split(Char[], Int32, StringSplitOptions)
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
Divide uma cadeia num número máximo de subcadeias com base em caracteres delimitadores especificados e, opcionalmente, opções.
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()
Parâmetros
- separator
- Char[]
Um array de caracteres que delimita as substrings nesta cadeia, um array vazio que não contém delimitadores, ou null.
- count
- Int32
O número máximo de substrings a retornar.
- options
- StringSplitOptions
Uma combinação binária dos valores da enumeração que especifica se devem ser removidos os espaços em branco no início e no fim das subcadeias e se devem ser incluídas subcadeias vazias.
Devoluções
Um array que contém as subcadeias nesta cadeia delimitadas por um ou mais caracteres em separator. Para obter mais informações, consulte a seção Observações.
- Atributos
Exceções
count é negativo.
options não é um dos valores StringSplitOptions .
Exemplos
O exemplo seguinte utiliza a StringSplitOptions enumeração para incluir ou excluir substrings geradas pelo Split método.
// 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]>
'
Observações
Os caracteres delimitadores não estão incluídos nos elementos do array devolvido.
Se esta instância não contiver nenhum dos caracteres em separator, ou o count parâmetro for 1, o array devolvido consiste num único elemento que contém esta instância.
Se o separator parâmetro não for null ou não contiver caracteres, assume-se que os caracteres de espaço em branco são os delimitadores. Os caracteres de espaço em branco são definidos pelo padrão Unicode e o Char.IsWhiteSpace método devolve true se forem passados para ele.
Para passar null para o char[] separator parâmetro, deve indicar o tipo de para null desambiguar a chamada de algumas outras sobrecargas, como Split(String[], Int32, StringSplitOptions). O exemplo seguinte mostra várias formas de identificar esta sobrecarga de forma inequívoca.
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)
Se o count parâmetro for zero, ou se o options parâmetro for RemoveEmptyEntries e o comprimento desta instância for zero, é devolvido um array vazio.
Cada elemento de separator define um carácter delimitador separado. Se o options parâmetro for None, e dois delimitadores forem adjacentes ou se encontrar um delimitador no início ou no fim desta instância, o elemento correspondente do array contém Empty.
Se existirem mais de count substrings neste caso, as primeiras count substrings menos 1 são devolvidas nos primeiros count elementos menos 1 do valor de retorno, e os caracteres restantes neste caso são devolvidos no último elemento do valor de retorno.
Se count for maior do que o número de substrings, as substrings disponíveis são devolvidas e não é lançada nenhuma exceção.
Considerações sobre desempenho
Os Split métodos alocam memória para o objeto do array devolvido e um String objeto para cada elemento do array. Se a sua aplicação requer desempenho ótimo ou se a gestão da alocação de memória for crítica na sua aplicação, considere usar o IndexOf método ou IndexOfAny , e opcionalmente o Compare método, para localizar uma substring dentro de uma string.
Se estiver a separar uma cadeia num carácter separador, use o IndexOf método ou IndexOfAny para localizar um carácter separador na cadeia. Se estiver a dividir uma cadeia numa cadeia separadora, use o IndexOf método ou IndexOfAny para localizar o primeiro carácter da cadeia separadora. Depois, use o Compare método para determinar se os caracteres após esse primeiro carácter são iguais aos caracteres restantes da cadeia separadora.
Além disso, se o mesmo conjunto de caracteres for usado para dividir cadeias em múltiplas Split chamadas de método, considere criar um único array e referenciá-lo em cada chamada de método. Isto reduz significativamente a sobrecarga adicional de cada chamada de método.
Notas para Chamadores
No .NET Framework 3.5 e versões anteriores, se o método Split(Char[]) receber um separator que é null ou não contém caracteres, o método usa um conjunto ligeiramente diferente de espaços em branco para dividir a cadeia do que o método Trim(Char[]) faz para cortar a cadeia. Começando com o .NET Framework 4, ambos os métodos utilizam um conjunto idêntico de caracteres de espaço em branco Unicode.
Aplica-se a
Split(Char, Int32, StringSplitOptions)
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
Divide uma cadeia num número máximo de subcadeias com base no separador de caracteres fornecido, omitindo opcionalmente subcadeias vazias do resultado.
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()
Parâmetros
- separator
- Char
Um carácter que delimita as substrings neste caso.
- count
- Int32
O número máximo de elementos esperado na matriz.
- options
- StringSplitOptions
Uma combinação binária dos valores da enumeração que especifica se devem ser removidos os espaços em branco no início e no fim das subcadeias e se devem ser incluídas subcadeias vazias.
Devoluções
Um array que contém no máximo count substrings desta instância que são delimitadas por separator.
Observações
Se a cadeia já foi dividida count - 1 vezes, mas o fim da sequência não foi alcançado, então a última cadeia do array devolvido conterá a subcadeia final restante dessa instância, intocada.
Aplica-se a
Split(String[], StringSplitOptions)
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
Divide uma cadeia em subcadeias com base numa cadeia delimitadora especificada e, opcionalmente, opções.
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()
Parâmetros
- separator
- String[]
Um array de cadeias que delimita as substrings desta cadeia, um array vazio que não contém delimitadores, ou null.
- options
- StringSplitOptions
Uma combinação binária dos valores da enumeração que especifica se devem ser removidos os espaços em branco no início e no fim das subcadeias e se devem ser incluídas subcadeias vazias.
Devoluções
Um array cujos elementos contêm as subcadeias nesta cadeia que são delimitadas por uma ou mais cadeias em separator. Para obter mais informações, consulte a seção Observações.
- Atributos
Exceções
options não é um dos valores StringSplitOptions .
Exemplos
O exemplo seguinte ilustra a diferença nos arrays retornados ao chamar o método de String.Split(String[], StringSplitOptions) uma cadeia com o seu options parâmetro igual a StringSplitOptions.None e 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'
O exemplo seguinte define um array de separadores que inclui pontuação e caracteres de espaço em branco. Passar este array juntamente com um valor de StringSplitOptions.RemoveEmptyEntries para o Split(String[], StringSplitOptions) método retorna um array que consiste nas palavras individuais da cadeia.
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
Note-se que o método é chamado com o options argumento definido como StringSplitOptions.RemoveEmptyEntries. Isto impede que o array devolvido inclua String.Empty valores que representem correspondências de substrings vazias entre sinais de pontuação e caracteres de espaço em branco.
Observações
Quando uma cadeia é delimitada por um conjunto conhecido de cadeias, pode-se usar o Split método para a separar em subcadeias.
As cadeias delimitadoras não estão incluídas nos elementos do array devolvido. Por exemplo, se o separator array incluir a string "--" e o valor da instância atual da string for "aa--bb--cc", o método devolve um array que contém três elementos: "aa", "bb" e "cc".
Se esta instância não contiver nenhuma das cadeias em separator, o array devolvido consiste num único elemento que contém esta instância.
Se o options parâmetro for RemoveEmptyEntries e o comprimento desta instância for zero, o método devolve um array vazio.
Cada elemento de separator define um delimitador separado que consiste em um ou mais caracteres. Se o argumento options for None, e dois delimitadores forem adjacentes ou se encontrar um delimitador no início ou no fim desta instância, o elemento correspondente do array contém String.Empty. Por exemplo, se separator incluir dois elementos, "-" e "_", o valor da instância da cadeia é "-_aa-_", e o valor do options argumento é None, o método devolve um array de cadeias com os seguintes cinco elementos:
String.Empty, que representa a cadeia vazia que precede a subcadeia "-" no índice 0.
String.Empty, que representa a cadeia vazia entre a subcadeia "-" no índice 0 e a subcadeia "_" no índice 1.
"aa".
String.Empty, que representa a cadeia vazia que segue a subcadeia "-" no índice 4.
String.Empty, que representa a cadeia vazia que segue a subcadeia "_" no índice 5.
A matriz de separadores
Se algum dos elementos em separator consiste em múltiplos caracteres, toda a subcadeia é considerada um delimitador. Por exemplo, se um dos elementos em separator for "10", tentar separar a cadeia "This10is10a10string." retorna o seguinte array de quatro elementos: { "This", "is", "a", "string." }.
Se o separator parâmetro não for null ou não contiver cadeias não vazias, assume-se que os caracteres de espaço em branco são os delimitadores. Os caracteres de espaço em branco são definidos pelo padrão Unicode e o Char.IsWhiteSpace método devolve true se forem passados para ele.
Para passar null para o string[] separator parâmetro, deve indicar o tipo de para null desambiguar a chamada de algumas outras sobrecargas, como Split(Char[], StringSplitOptions). O exemplo seguinte mostra várias formas de identificar esta sobrecarga de forma inequívoca.
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)
Detalhes da comparação
O Split método extrai as substrings desta string que são delimitadas por uma ou mais strings no separator parâmetro e devolve essas substrings como elementos de um array.
O Split método procura delimitadores realizando comparações usando regras de ordenação ordinal sensíveis a maiúsculas minúsculas. Para mais informações sobre ordenações de palavras, cadeias e ordinais, consulte a System.Globalization.CompareOptions enumeração.
O Split método ignora qualquer elemento de separator cujo valor seja null ou a cadeia vazia ("").
Para evitar resultados ambíguos quando as cadeias em separator têm caracteres em comum, a Split operação procede do início ao fim do valor da instância, e corresponde ao primeiro elemento em separator que é igual a um delimitador na instância. A ordem em que as substrings são encontradas na instância tem precedência sobre a ordem dos elementos em separator.
Por exemplo, considere uma instância cujo valor é "abcdef". Se o primeiro elemento em separator fosse "ef" e o segundo elemento fosse "bcde", o resultado da operação de divisão seria um array de cadeias que contém dois elementos, "a" e "f". Isto deve-se ao facto de a subcadeia na instância "bcde" ser encontrada e corresponder a um elemento em separator antes de a subcadeia "f" ser encontrada.
No entanto, se o primeiro elemento de separator fosse "bcd" e o segundo elemento fosse "bc", o resultado da operação de divisão seria um array de cadeias que contém dois elementos, "a" e "ef". Isto porque "bcd" é o primeiro delimitador que separator corresponde a um delimitador na instância. Se a ordem dos separadores fosse invertida para que o primeiro elemento fosse "bc" e o segundo elemento fosse "bcd", o resultado seria um array de cadeias que contém dois elementos, "a" e "def".
Considerações sobre desempenho
Os Split métodos alocam memória para o objeto do array devolvido e um String objeto para cada elemento do array. Se a sua aplicação requer desempenho ótimo ou se a gestão da alocação de memória for crítica na sua aplicação, considere usar o IndexOf método ou IndexOfAny , e opcionalmente o Compare método, para localizar uma substring dentro de uma string.
Se estiver a separar uma cadeia num carácter separador, use o IndexOf método ou IndexOfAny para localizar um carácter separador na cadeia. Se estiver a dividir uma cadeia numa cadeia separadora, use o IndexOf método ou IndexOfAny para localizar o primeiro carácter da cadeia separadora. Depois, use o Compare método para determinar se os caracteres após esse primeiro carácter são iguais aos caracteres restantes da cadeia separadora.
Além disso, se o mesmo conjunto de caracteres for usado para dividir cadeias em múltiplas Split chamadas de método, considere criar um único array e referenciá-lo em cada chamada de método. Isto reduz significativamente a sobrecarga adicional de cada chamada de método.
Notas para Chamadores
No .NET Framework 3.5 e versões anteriores, se o método Split(Char[]) receber um separator que é null ou não contém caracteres, o método usa um conjunto ligeiramente diferente de espaços em branco para dividir a cadeia do que o método Trim(Char[]) faz para cortar a cadeia. Começando com o .NET Framework 4, ambos os métodos utilizam um conjunto idêntico de caracteres de espaço em branco Unicode.
Aplica-se a
Split(String, Int32, StringSplitOptions)
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
Divide uma cadeia num número máximo de subcadeias com base numa cadeia delimitadora especificada e, opcionalmente, opções.
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()
Parâmetros
- separator
- String
Uma cadeia que delimita as subcadeias neste caso.
- count
- Int32
O número máximo de elementos esperado na matriz.
- options
- StringSplitOptions
Uma combinação binária dos valores da enumeração que especifica se devem ser removidos os espaços em branco no início e no fim das subcadeias e se devem ser incluídas subcadeias vazias.
Devoluções
Um array que contém no máximo count substrings desta instância que são delimitadas por separator.
Observações
Se a cadeia já foi dividida count - 1 vezes, mas o fim da sequência não foi alcançado, então a última cadeia do array devolvido conterá a subcadeia final restante dessa instância, intocada.
Aplica-se a
Split(Char[], StringSplitOptions)
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
Divide uma cadeia em substrings com base em caracteres e opções delimitadoras especificados.
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()
Parâmetros
- separator
- Char[]
Um array de caracteres que delimita as substrings nesta cadeia, um array vazio que não contém delimitadores, ou null.
- options
- StringSplitOptions
Uma combinação binária dos valores da enumeração que especifica se devem ser removidos os espaços em branco no início e no fim das subcadeias e se devem ser incluídas subcadeias vazias.
Devoluções
Um array cujos elementos contêm as substrings nesta cadeia que são delimitadas por um ou mais caracteres em separator. Para obter mais informações, consulte a seção Observações.
- Atributos
Exceções
options não é um dos valores StringSplitOptions .
Exemplos
O exemplo seguinte utiliza a StringSplitOptions enumeração para incluir ou excluir substrings geradas pelo Split método.
// 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]>
'
Observações
Os caracteres delimitadores (os caracteres no separator array) não são incluídos nos elementos do array devolvido. Por exemplo, se o separator array incluir o carácter "-" e o valor da instância atual da string for "aa-bb-cc", o método devolve um array que contém três elementos: "aa", "bb" e "cc".
Se esta instância não contiver nenhum dos caracteres em separator, o array devolvido consiste num único elemento que contém esta instância.
Se o options parâmetro for RemoveEmptyEntries e o comprimento desta instância for zero, o método devolve um array vazio.
Cada elemento de separator define um delimitador separado que consiste num único carácter. Se o argumento options for None, e dois delimitadores forem adjacentes ou se encontrar um delimitador no início ou no fim desta instância, o elemento correspondente do array contém String.Empty. Por exemplo, se separator incluir dois elementos, '-' e '_', o valor da instância da cadeia é "-_aa-_", e o valor do options argumento é None, o método devolve um array de cadeias com os seguintes cinco elementos:
String.Empty, que representa a cadeia vazia que precede o carácter "-" no índice 0.
String.Empty, que representa a cadeia vazia entre o carácter "-" no índice 0 e o carácter "_" no índice 1.
"aa".
String.Empty, que representa a cadeia vazia que segue o carácter "-" no índice 4.
String.Empty, que representa a cadeia vazia que segue o carácter "_" no índice 5.
A matriz de separadores
Se o separator parâmetro não for null ou não contiver caracteres, assume-se que os caracteres de espaço em branco são os delimitadores. Os caracteres de espaço em branco são definidos pelo padrão Unicode e o Char.IsWhiteSpace método devolve true se forem passados para ele.
Para passar null para o char[] separator parâmetro, deve indicar o tipo de para null desambiguar a chamada de algumas outras sobrecargas, como Split(String[], StringSplitOptions). O exemplo seguinte mostra várias formas de identificar esta sobrecarga de forma inequívoca.
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)
Detalhes da comparação
O Split método extrai as substrings desta string que são delimitadas por um ou mais caracteres no separator parâmetro, e devolve essas substrings como elementos de um array.
O Split método procura delimitadores realizando comparações usando regras de ordenação ordinal sensíveis a maiúsculas minúsculas. Para mais informações sobre ordenações de palavras, cadeias e ordinais, consulte a System.Globalization.CompareOptions enumeração.
Considerações sobre desempenho
Os Split métodos alocam memória para o objeto do array devolvido e um String objeto para cada elemento do array. Se a sua aplicação requer desempenho ótimo ou se a gestão da alocação de memória for crítica na sua aplicação, considere usar o IndexOf método ou IndexOfAny , e opcionalmente o Compare método, para localizar uma substring dentro de uma string.
Se estiver a separar uma cadeia num carácter separador, use o IndexOf método ou IndexOfAny para localizar um carácter separador na cadeia. Se estiver a dividir uma cadeia numa cadeia separadora, use o IndexOf método ou IndexOfAny para localizar o primeiro carácter da cadeia separadora. Depois, use o Compare método para determinar se os caracteres após esse primeiro carácter são iguais aos caracteres restantes da cadeia separadora.
Além disso, se o mesmo conjunto de caracteres for usado para dividir cadeias em múltiplas Split chamadas de método, considere criar um único array e referenciá-lo em cada chamada de método. Isto reduz significativamente a sobrecarga adicional de cada chamada de método.
Notas para Chamadores
No .NET Framework 3.5 e versões anteriores, se o método Split(Char[]) receber um separator que é null ou não contém caracteres, o método usa um conjunto ligeiramente diferente de espaços em branco para dividir a cadeia do que o método Trim(Char[]) faz para cortar a cadeia. Começando com o .NET Framework 4, ambos os métodos utilizam um conjunto idêntico de caracteres de espaço em branco Unicode.
Aplica-se a
Split(Char[], Int32)
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
Divide uma cadeia num número máximo de subcadeias com base em caracteres delimitadores especificados.
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()
Parâmetros
- separator
- Char[]
Um array de caracteres que delimita as substrings nesta cadeia, um array vazio que não contém delimitadores, ou null.
- count
- Int32
O número máximo de substrings a retornar.
Devoluções
Um array cujos elementos contêm as substrings neste caso que são delimitadas por um ou mais caracteres em separator. Para obter mais informações, consulte a seção Observações.
Exceções
count é negativo.
Exemplos
O exemplo seguinte demonstra como count pode ser usado para limitar o número de cadeias retornadas por 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"
Observações
Os caracteres delimitadores não estão incluídos nos elementos do array devolvido.
Se esta instância não contiver nenhum dos caracteres em separator, o array devolvido consiste num único elemento que contém esta instância. Se count for zero, um array vazio é devolvido.
Se o separator parâmetro não for null ou não contiver caracteres, assume-se que os caracteres de espaço em branco são os delimitadores. Os caracteres de espaço em branco são definidos pelo padrão Unicode e o Char.IsWhiteSpace método devolve true se forem passados para ele.
Cada elemento de separator define um carácter delimitador separado. Se dois delimitadores forem adjacentes, ou se um delimitador for encontrado no início ou no fim desta instância, o elemento correspondente do array contém Empty.
Se existirem mais de count substrings neste caso, as primeiras count - 1 substrings são devolvidas nos primeiros count - 1 elementos do valor de retorno, e os caracteres restantes neste caso são devolvidos no último elemento do valor de retorno.
Se count for maior do que o número de substrings, as substrings disponíveis são devolvidas e não é lançada nenhuma exceção.
A tabela a seguir mostra alguns exemplos.
| Linguagem | Valor da cadeia de caracteres | Separador | Array retornado |
|---|---|---|---|
| C# | "42, 12, 19" | novo Char[] {',', ' '} | {"42", "", "12", "", "19"} |
| Visual Basic | "42, 12, 19" | Char() = {","c, " "c}) | {"42", "", "12", "", "19"} |
| C# | "42..12..19." | novo Char[] {'.'} | {"42", "", "12", "", "19", ""} |
| Visual Basic | "42..12..19." | Char() = {"." c} | {"42", "", "12", "", "19", ""} |
| C# | "Banana" | novo Char[] {'.'} | {"Banana"} |
| Visual Basic | "Banana" | Char() = {"." c} | {"Banana"} |
| C# | "Darb\nSmarba" | novo Char[] {} | {"Darb", "Smarba"} |
| Visual Basic | "Darb" & vbLf & "Smarba" | Char() = {} | {"Darb", "Smarba"} |
| C# | "Darb\nSmarba" | null | {"Darb", "Smarba"} |
| Visual Basic | "Darb" & vbLf & "Smarba" | Nada | {"Darb", "Smarba"} |
Considerações sobre desempenho
Os Split métodos alocam memória para o objeto do array devolvido e um String objeto para cada elemento do array. Se a sua aplicação requer desempenho ótimo ou se a gestão da alocação de memória for crítica na sua aplicação, considere usar o IndexOf método ou IndexOfAny , e opcionalmente o Compare método, para localizar uma substring dentro de uma string.
Se estiver a separar uma cadeia num carácter separador, use o IndexOf método ou IndexOfAny para localizar um carácter separador na cadeia. Se estiver a dividir uma cadeia numa cadeia separadora, use o IndexOf método ou IndexOfAny para localizar o primeiro carácter da cadeia separadora. Depois, use o Compare método para determinar se os caracteres após esse primeiro carácter são iguais aos caracteres restantes da cadeia separadora.
Além disso, se o mesmo conjunto de caracteres for usado para dividir cadeias em múltiplas Split chamadas de método, considere criar um único array e referenciá-lo em cada chamada de método. Isto reduz significativamente a sobrecarga adicional de cada chamada de método.
Notas para Chamadores
No .NET Framework 3.5 e versões anteriores, se o método Split(Char[]) receber um separator que é null ou não contém caracteres, o método usa um conjunto ligeiramente diferente de espaços em branco para dividir a cadeia do que o método Trim(Char[]) faz para cortar a cadeia. Começando com o .NET Framework 4, ambos os métodos utilizam um conjunto idêntico de caracteres de espaço em branco Unicode.
Ver também
- Char
- Array
- Int32
- Concat(Object)
- Insert(Int32, String)
- Join(String, String[])
- Remove(Int32, Int32)
- Replace(Char, Char)
- Substring(Int32)
- Trim(Char[])
Aplica-se a
Split(Char, StringSplitOptions)
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
Divide uma cadeia em subcadeias com base num carácter delimitador especificado e, opcionalmente, em opções.
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()
Parâmetros
- separator
- Char
Um carácter que delimita as substrings nesta cadeia.
- options
- StringSplitOptions
Uma combinação binária dos valores da enumeração que especifica se devem ser removidos os espaços em branco no início e no fim das subcadeias e se devem ser incluídas subcadeias vazias.
Devoluções
Um array cujos elementos contêm as subcadeias desta instância que são delimitadas por separator.
Aplica-se a
Split(ReadOnlySpan<Char>)
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
Divide uma cadeia em subcadeias com base em caracteres delimitadores especificados.
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()
Parâmetros
- separator
- ReadOnlySpan<Char>
Um espaço de caracteres delimitadores, ou um espaço vazio que não contém delimitadores.
Devoluções
Um array cujos elementos contêm as substrings desta instância que são delimitadas por um ou mais caracteres em separator.
Aplica-se a
Split(Char[])
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
Divide uma cadeia em subcadeias com base em caracteres delimitadores especificados.
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()
Parâmetros
- separator
- Char[]
Um array de caracteres delimitadores, um array vazio que não contém delimitadores, ou null.
Devoluções
Um array cujos elementos contêm as substrings desta instância que são delimitadas por um ou mais caracteres em separator. Para obter mais informações, consulte a seção Observações.
Exemplos
O exemplo seguinte demonstra como extrair palavras individuais de um bloco de texto tratando o carácter de espaço ( ) e o carácter tab (\t) como delimitadores. A cadeia que está a ser dividida inclui ambos os caracteres.
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
Observações
Quando uma cadeia é delimitada por um conjunto conhecido de caracteres, pode usar o Split(Char[]) método para a separar em subcades.
Os caracteres delimitadores não estão incluídos nos elementos do array devolvido. Por exemplo, se o array separador incluir o carácter "-" e o valor da instância atual da string for "aa-bb-cc", o método devolve um array que contém três elementos: "aa", "bb" e "cc".
Se esta instância não contiver nenhum dos caracteres em separator, o array devolvido consiste num único elemento que contém esta instância.
Cada elemento de separator define um carácter delimitador separado. Se dois delimitadores forem adjacentes, ou se for encontrado um delimitador no início ou no fim desta instância, o elemento correspondente no array devolvido contém Empty.
A tabela a seguir mostra alguns exemplos.
| Linguagem | Valor da cadeia de caracteres | Separador | Array retornado |
|---|---|---|---|
| C# | "42, 12, 19" | novo Char[] {',', ' '} | {"42", "", "12", "", "19"} |
| Visual Basic | "42, 12, 19" | Char() = {","c, " "c}) | {"42", "", "12", "", "19"} |
| C# | "42..12..19." | novo Char[] {'.'} | {"42", "", "12", "", "19", ""} |
| Visual Basic | "42..12..19." | Char() = {"." c} | {"42", "", "12", "", "19", ""} |
| C# | "Banana" | novo Char[] {'.'} | {"Banana"} |
| Visual Basic | "Banana" | Char() = {"." c} | {"Banana"} |
| C# | "Darb\nSmarba" | novo Char[] {} | {"Darb", "Smarba"} |
| Visual Basic | "Darb" & vbLf & "Smarba" | Char() = {} | {"Darb", "Smarba"} |
| C# | "Darb\nSmarba" | null | {"Darb", "Smarba"} |
| Visual Basic | "Darb" & vbLf & "Smarba" | Nada | {"Darb", "Smarba"} |
A matriz de separadores
Cada elemento do separador define um delimitador separado que consiste num único carácter.
Se o argumento separator não tiver null ou não tiver caracteres, o método trata os caracteres de espaço branco como delimitadores. Os caracteres de espaço em branco são definidos pelo padrão Unicode, e o Char.IsWhiteSpace método retorna true se lhe for passada uma caractere.
String.Split(Char[]) e resolução de sobrecarga do compilador
Embora o único parâmetro para esta sobrecarga de String.Split seja um array de caracteres, pode chamá-lo com um único caractere, como mostra o exemplo seguinte.
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.
Como o separator parâmetro é decorado com o ParamArrayAttribute atributo, os compiladores interpretam um único carácter como um array de caracteres de elemento único. Isto não acontece com outras String.Split sobrecargas que incluem um separator parâmetro; é necessário passar explicitamente a estas sobrecargas um array de caracteres como separator argumento.
Detalhes da comparação
O Split(Char[]) método extrai as subcadeias desta cadeia que são delimitadas por um ou mais caracteres no separator array, e devolve essas substrings como elementos de um array.
O Split(Char[]) método procura delimitadores realizando comparações usando regras de ordenação ordinal sensíveis a maiúsculas minúsculas. Para mais informações sobre ordenações de palavras, cadeias e ordinais, consulte a System.Globalization.CompareOptions enumeração.
Considerações sobre desempenho
Os Split métodos alocam memória para o objeto do array devolvido e um String objeto para cada elemento do array. Se a sua aplicação requer desempenho ótimo ou se a gestão da alocação de memória for crítica na sua aplicação, considere usar o IndexOf método ou IndexOfAny . Também tem a opção de usar o Compare método para localizar uma subcadeia dentro de uma cadeia.
Para separar uma cadeia num carácter separador, use o IndexOf método ou IndexOfAny para localizar um carácter separador na cadeia. Para dividir uma cadeia numa cadeia separadora, use o IndexOf método ou IndexOfAny para localizar o primeiro carácter da cadeia separadora. Depois, use o Compare método para determinar se os caracteres após esse primeiro carácter são iguais aos caracteres restantes da cadeia separadora.
Além disso, se o mesmo conjunto de caracteres for usado para dividir cadeias em múltiplas Split chamadas de método, considere criar um único array e referenciá-lo em cada chamada de método. Isto reduz significativamente a sobrecarga adicional de cada chamada de método.
Notas para Chamadores
No .NET Framework 3.5 e versões anteriores, se o método Split(Char[]) receber um separator que é null ou não contém caracteres, o método usa um conjunto ligeiramente diferente de espaços em branco para dividir a cadeia do que o método Trim(Char[]) faz para cortar a cadeia. Começando com o .NET Framework 4, ambos os métodos utilizam um conjunto idêntico de caracteres de espaço em branco Unicode.
Ver também
- Char
- Concat(Object)
- Insert(Int32, String)
- Join(String, String[])
- Remove(Int32, Int32)
- Replace(Char, Char)
- Substring(Int32)
- Trim(Char[])
Aplica-se a
Split(String, StringSplitOptions)
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
- Origem:
- String.Manipulation.cs
Divide uma cadeia em subcadeias que se baseiam no separador de cordas fornecido.
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()
Parâmetros
- separator
- String
Uma cadeia que delimita as subcordas dessa cadeia.
- options
- StringSplitOptions
Uma combinação binária dos valores da enumeração que especifica se devem ser removidos os espaços em branco no início e no fim das subcadeias e se devem ser incluídas subcadeias vazias.
Devoluções
Um array cujos elementos contêm as subcadeias desta instância que são delimitadas por separator.