Informações
O tópico solicitado está sendo mostrado abaixo. No entanto, este tópico não está incluído nesta biblioteca.

Método String.Split (String[], StringSplitOptions)

Retorna um array de Strings que contém as substrings nesta String que são delimitadas por elementos de array de Strings especificado. Um parâmetro especifica se elementos vazios devem ser retornados ou não.

Namespace:  System
Assembly:  mscorlib (em mscorlib.dll)

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

Parâmetros

separator
Tipo: System.String[]
Uma matriz de cadeias de caracteres de caractere único que limitam as subcadeia de caracteres na cadeia de caracteres, uma matriz vazia que não contém nenhum delimitador, ou em null.
options
Tipo: System.StringSplitOptions
RemoveEmptyEntries para omitir os elementos da matriz vazia da matriz retornada; ou None para incluir os elementos da matriz vazia na matriz retornada.

Valor de retorno

Tipo: System.String[]
Uma matriz cujos elementos contém as subcadeia de caracteres na cadeia de caracteres que são delimitadas por uma ou mais cadeias de caracteres em separator. Para obter mais informações, consulte a seção Comentários.

ExceçãoCondição
ArgumentException

options não é um dos valores StringSplitOptions.

Detalhes do valor de retorno

As cadeias delimitadoras não são incluídas nos elementos da matriz retornada.

Se esta instância não contém nenhuma das cadeias de caracteres em separator, a matriz retornado consiste em um único elemento que contém essa instância. Caso o parâmetro separator seja null ou não contenha nenhum caractere, os caracteres de espaço em branco devem ser considerados os delimitadores. Os caracteres de espaço em branco são definidos pelo padrão Unicode e retornam true caso sejam passados para o método Char.IsWhiteSpace. No entanto, caso o parâmetro separator na chamada para esta sobrecarga de método seja null, a resolução de sobrecarga do compilador falha. Para identificar de forma exclusiva o método chamado, o código deve indicar o tipo de null. O exemplo a seguir mostra várias maneiras para identificar sem ambiguidade essa sobrecarga.


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

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

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

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


Se o parâmetro de options é RemoveEmptyEntries e o comprimento desta instância for zero, uma matriz vazia será retornada.

Cada elemento de separator define um delimitador separado que consiste em um ou mais caracteres. Caso o parâmetro options seja None e dois delimitadores sejam adjacentes ou um delimitador esteja no início ou no fim dessa instância, o elemento da matriz correspondente contém Empty.

A matriz do separador

Se algum dos elementos em separator consistem em mais de um único caractere, apenas o primeiro caractere do elemento é considerado um delimitador, e todos os caracteres subsequentes serão ignorados. Por exemplo, se um dos elementos em separator é “10 ", tentando dividir a cadeia de caracteres “This10is10a10string”. retorna a seguir matriz de quatro elemento: {“Ou”, “0is”, “0a”, “0string”. }.

Detalhes de comparação

O método de Split extrai as subcadeia de caracteres na cadeia de caracteres que são delimitadas por uma ou mais das cadeias de caracteres no parâmetro de separator , e retorna as subcadeia de caracteres como elementos de uma matriz.

O método de Split procura delimitadores para executar comparações usando regras ordinais com distinção entre maiúsculas e minúsculas do tipo. Para obter mais informações sobre palavras, a cadeia de caracteres, e os tipos de ordinal, consulte a enumeração de System.Globalization.CompareOptions .

O método de Split ignora qualquer elemento de separator cujo valor é null ou a cadeia de caracteres vazia ("").

Para evitar resultados ambíguos quando as cadeias de caracteres em separator caracteres têm em comum, o gera da operação de Split desde o início ao fim do valor da instância, e as correspondências do primeiro elemento em separator que é igual a um delimitador na instância do. A ordem na qual a subcadeia de caracteres 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 era “ef” e o segundo elemento era “bcde”, o resultado da operação de divisão é “a” e “f”. Isso ocorre porque a subcadeia de caracteres na instância, “bcde”, está localizada e correspondências um elemento em separator antes que a subcadeia de caracteres “f” foi encontrada.

No entanto, se o primeiro elemento de separator era “bcd” e o segundo elemento era “bc”, o resultado da operação de divisão é “a” e “ef”. Isso ocorre porque o “bcd” é o primeiro delimitadores em separator que corresponde a um delimitador na instância do. Se a ordem dos separadores foi inversa para que o primeiro elemento era “bc” e o segundo elemento era “bcd”, o resultado será “a” e “def”.

Considerações sobre desempenho

Os métodos Split alocam memória para o objeto de matriz retornado e um objeto String para cada elemento da matriz. Caso o aplicativo exija desempenho ideal ou em caso de gerenciamento da alocação da memória ser importante no aplicativo, considere o uso do método IndexOf ou IndexOfAny, e opcionalmente o método de Compare para localizar uma subcadeia de caracteres dentro de uma cadeia de caracteres.

Caso você esteja dividindo uma cadeia de caracteres em um separador de caractere, use o método IndexOf ou IndexOfAny para localizar um caractere separador na cadeia de caracteres. Caso você esteja dividindo uma cadeia de caracteres em uma cadeia de caracteres separadora, use o método IndexOf ou de IndexOfAny para localizar o primeiro caractere da cadeia de caracteres separadora. Em seguida, use o método Compare para determinar se os caracteres depois desse primeiro caractere são iguais aos caracteres restantes da cadeia de caracteres separadora.

Além disso, caso o mesmo conjunto de caracteres seja usado para dividir cadeias de caracteres em várias chamadas de método Split, considere criar uma matriz única e referencie-a em cada chamada de método. Isso reduz significativamente a sobrecarga adicional de cada chamada de método.

Observações para chamadores

No .NET Framework 3.5 e em versões anteriores, caso o método Split receba um separator que é null ou não contém nenhum caractere, o método usa um conjunto um pouco diferente de caracteres para dividir a cadeia de caracteres do método Trim para cortar a cadeia de caracteres. No .NET Framework 4, ambos os métodos usam um conjunto idêntico de caracteres de espaço em branco Unicode.

O exemplo a seguir ilustra a diferença nas matrizes retornadas chamando o método de String.Split(String[], StringSplitOptions) de uma cadeia de caracteres com o parâmetro de options igual a StringSplitOptions.None e a StringSplitOptions.RemoveEmptyEntries.


using System;

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

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

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

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


O exemplo a seguir define uma matriz dos separadores que incluem caracteres de pontuação e de espaço em branco. Passando esta matriz com um valor de StringSplitOptions.RemoveEmptyEntries ao método de Split(String[], StringSplitOptions) retorna uma matriz que consiste em palavras individuais de cadeia de caracteres.


using System;

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


Observe que o método é chamado com o argumento de options definido como StringSplitOptions.RemoveEmptyEntries. Isso impede que a matriz retornado inclui os valores de String.Empty que representam a correspondência de subcadeia de caracteres vazia entre marcas de pontuação e caracteres de espaço em branco.

.NET Framework

Com suporte em: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Biblioteca de Classes Portátil

Com suporte em: Biblioteca de Classes Portátil

.NET para aplicativos da Windows Store

Com suporte em: Windows 8

.NET para aplicativos do Windows Phone

Com suporte em: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Função Server Core sem suporte), Windows Server 2008 R2 (Função Server Core com suporte com o SP1 ou posterior, Itanium sem suporte)

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte Requisitos do sistema do .NET Framework.

Contribuições da comunidade

Mostrar:
© 2014 Microsoft