Información
El tema que ha solicitado se muestra abajo. Sin embargo, este tema no se encuentra en la biblioteca.

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

Devuelve una matriz de cadenas que contiene las subcadenas de esta cadena que están delimitadas por elementos de la matriz de cadenas especificada. Un parámetro especifica si se van a devolver elementos de matriz vacíos.

Espacio de nombres:  System
Ensamblado:  mscorlib (en mscorlib.dll)

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

Parámetros

separator
Tipo: System.String[]
Matriz de cadenas de un solo carácter que delimitan las subcadenas de esta cadena, una matriz vacía sin delimitadores o null.
options
Tipo: System.StringSplitOptions
RemoveEmptyEntries para omitir los elementos de matriz vacíos de la matriz devuelta; o bien, None para incluir los elementos de matriz vacíos en la matriz devuelta.

Valor devuelto

Tipo: System.String[]
Una matriz cuyos elementos contienen las subcadenas de esta cadena que están delimitadas por una o varias cadenas de separator. Para obtener más información, vea la sección Comentarios.

ExcepciónCondición
ArgumentException

options no es uno de los valores de StringSplitOptions.

Detalles del valor devuelto

Las cadenas delimitadoras no se incluyen en los elementos de la matriz devuelta.

Si esta instancia no contiene ninguna de las cadenas de separator, la matriz devuelta constará de un solo elemento que contiene esta instancia. Si el parámetro separator es null o no contiene caracteres, se supone que los caracteres de espacio en blanco son los delimitadores. El estándar Unicode define caracteres de espacio en blanco y devuelve true si se pasan al método Char.IsWhiteSpace. Sin embargo, si el parámetro separator en la llamada a esta sobrecarga de método es null, la resolución de sobrecarga del compilador produce un error. Para identificar el método llamado inequívocamente, el código debe indicar el tipo del null. En el siguiente ejemplo se muestran varias maneras de identificar esta sobrecarga inequívocamente.


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


Si el valor del parámetro options es RemoveEmptyEntries y la longitud de esta instancia es cero, se devuelve una matriz vacía.

Cada elemento de separator define un delimitador independiente que está compuesto de uno o más caracteres. Si el valor del parámetro options es None y dos delimitadores son adyacentes o se encuentra un delimitador al principio o al final de esta instancia, el elemento de matriz correspondiente contiene Empty.

La matriz de separador

Si cualquiera de los elementos en separator constan de más de un carácter individual, sólo el primer carácter del elemento se considera se omiten un delimitador, y cualquier carácter subsiguiente. Por ejemplo, si uno de los elementos de separator es “10 ", intentar dividir la cadena “This10is10a10string.” devuelve la siguiente matriz de cuatro- elemento: {“This”, “0is”, “0a”, “0string.” }.

Detalles de comparación

El método Split extrae las subcadenas de esta cadena que están delimitadas por una o varias cadenas del parámetro separator y devuelve esas subcadenas como elementos de una matriz.

El método Split busca los delimitadores realizando comparaciones según las reglas de ordenación de ordinales con distinción entre mayúsculas y minúsculas. Para obtener más información sobre las operaciones de ordenación de palabras, cadenas y ordinales, vea la enumeración System.Globalization.CompareOptions.

El método Split omite cualquier elemento de separator cuyo valor sea null o la cadena vacía ("").

Para evitar resultados ambiguos cuando las cadenas de separator tienen caracteres en común, la operación Split se ejecuta desde el principio hasta el final del valor de la instancia y compara el primer elemento de separator que sea igual a un delimitador de la instancia. El orden en el que se encuentran las subcadenas en la instancia tiene precedencia sobre el orden de los elementos en separator.

Por ejemplo, consideremos una instancia cuyo valor es "abcdef". Si el primer elemento de separator es "ef" y el segundo es "bcde", el resultado de la operación de división será "a" y "f". Esto es porque la subcadena de la instancia "bcde" se detecta y coincide con un elemento de separator antes de que se encuentre la subcadena "f".

Sin embargo, si el primer elemento de separator es "bcd" y el segundo es "bc", el resultado de la operación de división será "a" y "ef". Esto es porque "bcd" es el primer delimitador en separator que coincide con un delimitador en la instancia. Si el orden de los separadores es inverso de modo que el primer elemento es "bc" y el segundo "bcd", el resultado será "a" y "def".

Consideraciones sobre el rendimiento

Los métodos Split asignan la memoria para el objeto de matriz devuelta y un objeto String para cada elemento de la matriz. Si la aplicación requiere un rendimiento óptimo o si la administración de la asignación de memoria es básica en la aplicación, piense en usar los métodos IndexOf o IndexOfAny y, opcionalmente, el método Compare para buscar una subcadena en una cadena.

Si divide una cadena en un carácter separador, utilice el método IndexOf u IndexOfAny para buscar un carácter separador en la cadena. Si divide una cadena en una cadena separadora, utilice el método IndexOf u IndexOfAny para buscar el primer carácter de la cadena separadora. A continuación, utilice el método Compare para determinar si los caracteres situados detrás de ese primer carácter son iguales a los caracteres restantes de la cadena separadora.

Además, si se usa el mismo juego de caracteres para dividir las cadenas en varias llamadas al método Split, piense en crear una sola matriz y hacer referencia a ella en cada llamada al método. De esta forma, se reduce considerablemente la sobrecarga adicional de cada llamada al método.

Notas para los llamadores

En .NET Framework 3.5 y versiones anteriores, si el método Split se pasa un separator que es null o no contiene ningún carácter, el método usa un juego de caracteres para dividir la cadena ligeramente diferente al que usa el método Trim para recortar la cadena. En .NET Framework 4, ambos métodos usan un conjunto idéntico de caracteres de espacio en blanco Unicode.

En el ejemplo siguiente se muestra la diferencia que existe entre las matrices devueltas por una llamada al método String.Split(String[], StringSplitOptions) de una cadena con el valor de su parámetro options establecido en StringSplitOptions.None y 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'


El ejemplo siguiente se define una matriz de separadores que incluyen caracteres de puntuación y de espacio en blanco. Pasando esta matriz junto con un valor de StringSplitOptions.RemoveEmptyEntries al método de Split(String[], StringSplitOptions) devuelve una matriz que consta de las palabras individuales de una cadena.


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 el método se llama con el argumento de options establecido en StringSplitOptions.RemoveEmptyEntries. Esto evita que la matriz devuelta incluye los valores de String.Empty que representan las coincidencias vacías de la subcadena entre los signos de puntuación y los caracteres de espacio en blanco.

.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Biblioteca de clases portable

Compatible con: Biblioteca de clases portable

.NET para aplicaciones de la Tienda Windows

Compatible con: Windows 8

.NET para aplicaciones de Windows Phone

Compatible con: 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 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

Mostrar:
© 2014 Microsoft