Procedimiento para analizar cadenas mediante String.Split (Guía de C#)How to: Parse Strings Using String.Split (C# Guide)

El método String.Split crea una matriz de subcadenas mediante la división de la cadena de entrada en función de uno o varios delimitadores.The String.Split method creates an array of substrings by splitting the input string based on one or more delimiters. Suele ser la manera más fácil de separar una cadena en límites de palabras.It is often the easiest way to separate a string on word boundaries. También sirve para dividir las cadenas en otras cadenas o caracteres específicos.It is also used to split strings on other specific characters or strings.

Nota

Los ejemplos de C# de este artículo se ejecutan en el ejecutor de código en línea y área de juegos de Try.NET.The C# examples in this article run in the Try.NET inline code runner and playground. Haga clic en el botón Ejecutar para ejecutar un ejemplo en una ventana interactiva.Select the Run button to run an example in an interactive window. Una vez que se ejecuta el código, puede modificar y ejecutar el código modificado si vuelve a hacer clic en Ejecutar.Once you execute the code, you can modify it and run the modified code by selecting Run again. El código modificado se ejecuta en la ventana interactiva o, si se produce un error en la compilación, en la ventana interactiva se muestran todos los mensajes de error del compilador de C#.The modified code either runs in the interactive window or, if compilation fails, the interactive window displays all C# compiler error messages.

Este código divide una frase común en una matriz de cadenas para cada palabra.The following code splits a common phrase into an array of strings for each word.

string phrase = "The quick brown fox jumps over the lazy dog.";
string[] words = phrase.Split(' ');

foreach (var word in words)
{
    System.Console.WriteLine($"<{word}>");
}

Todas las instancias de un carácter separador generan un valor en la matriz devuelta.Every instance of a separator character produces a value in the returned array. Los caracteres separadores consecutivos generan la cadena vacía como un valor en la matriz devuelta.Consecutive separator characters produce the empty string as a value in the returned array. Puede ver esto en el ejemplo siguiente, que usa espacios como separador:You can see this in the following example, which uses space as a separator:

string phrase = "The quick brown    fox     jumps over the lazy dog.";
string[] words = phrase.Split(' ');

foreach (var word in words)
{
    System.Console.WriteLine($"<{word}>");
}

Este comportamiento resulta más fácil para formatos como los de los archivos de valores separados por comas (CSV) que representan datos tabulares.This behavior makes it easier for formats like comma separated values (CSV) files representing tabular data. Las comas consecutivas representan una columna en blanco.Consecutive commas represent a blank column.

Puede pasar un parámetro StringSplitOptions.RemoveEmptyEntries opcional para excluir cualquier cadena vacía en la matriz devuelta.You can pass an optional StringSplitOptions.RemoveEmptyEntries parameter to exclude any empty strings in the returned array. Para un procesamiento más complicado de la colección devuelta, puede usar LINQ para manipular la secuencia de resultados.For more complicated processing of the returned collection, you can use LINQ to manipulate the result sequence.

String.Split puede usar varios caracteres separadores.String.Split can use multiple separator characters. En este ejemplo se usan espacios, comas, puntos, dos puntos y tabulaciones; están incluidos todos en una matriz que contiene estos caracteres de separación y que se pasa a Split.The following example uses spaces, commas, periods, colons, and tabs, all passed in an array containing these separating characters, to Split. En el bucle al final del código se muestra cada una de las palabras de la matriz devuelta.The loop at the bottom of the code displays each of the words in the returned array.

char[] delimiterChars = { ' ', ',', '.', ':', '\t' };

string text = "one\ttwo three:four,five six seven";
System.Console.WriteLine($"Original text: '{text}'");

string[] words = text.Split(delimiterChars);
System.Console.WriteLine($"{words.Length} words in text:");

foreach (var word in words)
{
    System.Console.WriteLine($"<{word}>");
}

Las instancias consecutivas de cualquier separador generan la cadena vacía en la matriz de salida:Consecutive instances of any separator produce the empty string in the output array:

char[] delimiterChars = { ' ', ',', '.', ':', '\t' };

string text = "one\ttwo :,five six seven";
System.Console.WriteLine($"Original text: '{text}'");

string[] words = text.Split(delimiterChars);
System.Console.WriteLine($"{words.Length} words in text:");

foreach (var word in words)
{
    System.Console.WriteLine($"<{word}>");
}

String.Split puede tomar una matriz de cadenas (secuencias de caracteres que actúan como separadores para analizar la cadena de destino, en lugar de caracteres individuales).String.Split can take an array of strings (character sequences that act as separators for parsing the target string, instead of single characters).

string[] separatingStrings = { "<<", "..." };

string text = "one<<two......three<four";
System.Console.WriteLine($"Original text: '{text}'");

string[] words = text.Split(separatingStrings, System.StringSplitOptions.RemoveEmptyEntries);
System.Console.WriteLine($"{words.Length} substrings in text:");

foreach (var word in words)
{
    System.Console.WriteLine(word);
}

Eche un vistazo al código de nuestro repositorio de GitHub y pruebe estos ejemplos.You can try these samples by looking at the code in our GitHub repository. O bien, puede descargar los ejemplos como un archivo ZIP.Or you can download the samples as a zip file.

Vea tambiénSee also