Procedimiento para concatenar varias cadenas (C#)How to: Concatenate Multiple Strings (C# Guide)

Concatenación es el proceso de anexar una cadena al final de otra cadena.Concatenation is the process of appending one string to the end of another string. Las cadenas se concatenan con el operador +.You concatenate strings by using the + operator. En el caso de los literales y las constantes de cadena, la concatenación se produce en tiempo de compilación, y no en tiempo de ejecución.For string literals and string constants, concatenation occurs at compile time; no run-time concatenation occurs. En cambio, para las variables de cadena, la concatenación solo se produce en tiempo de ejecución.For string variables, concatenation occurs only at run time.

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.

En el ejemplo siguiente se usa la concatenación para dividir un literal de cadena larga en cadenas más pequeñas para mejorar la legibilidad del código fuente.The following example uses concatenation to split a long string literal into smaller strings in order to improve readability in the source code. Estas partes se concatenan en una sola cadena en tiempo de compilación.These parts are concatenated into a single string at compile time. No existe ningún costo de rendimiento en tiempo de ejecución independientemente del número de cadenas de que se trate.There is no run-time performance cost regardless of the number of strings involved.

// Concatenation of literals is performed at compile time, not run time.
string text = "Historically, the world of data and the world of objects " +
"have not been well integrated. Programmers work in C# or Visual Basic " +
"and also in SQL or XQuery. On the one side are concepts such as classes, " +
"objects, fields, inheritance, and .NET Framework APIs. On the other side " +
"are tables, columns, rows, nodes, and separate languages for dealing with " +
"them. Data types often require translation between the two worlds; there are " +
"different standard functions. Because the object world has no notion of query, a " +
"query can only be represented as a string without compile-time type checking or " +
"IntelliSense support in the IDE. Transferring data from SQL tables or XML trees to " +
"objects in memory is often tedious and error-prone.";

System.Console.WriteLine(text);

Para concatenar variables de cadena, puede usar los operadores + o +=, la interpolación de cadena o los métodos String.Format, String.Concat, String.Join o StringBuilder.Append.To concatenate string variables, you can use the + or += operators, string interpolation or the String.Format, String.Concat, String.Join or StringBuilder.Append methods. El operador + es sencillo de usar y genera un código intuitivo.The + operator is easy to use and makes for intuitive code. Aunque use varios operadores + en una instrucción, el contenido de la cadena se copiará solo una vez.Even if you use several + operators in one statement, the string content is copied only once. En el código siguiente se muestran ejemplos del uso de los operadores + y += para concatenar cadenas:The following code shows examples of using the + and += operators to concatenate strings:

string userName = "<Type your name here>";
string dateString = DateTime.Today.ToShortDateString();

// Use the + and += operators for one-time concatenations.
string str = "Hello " + userName + ". Today is " + dateString + ".";
System.Console.WriteLine(str);

str += " How are you today?";
System.Console.WriteLine(str);

En algunas expresiones, es más fácil concatenar cadenas mediante la interpolación de cadena, como se muestra en este código:In some expressions, it's easier to concatenate strings using string interpolation, as the following code shows:

string userName = "<Type your name here>";
string date = DateTime.Today.ToShortDateString();

// Use string interpolation to concatenate strings.
string str = $"Hello {userName}. Today is {date}.";
System.Console.WriteLine(str);

str = $"{str} How are you today?";
System.Console.WriteLine(str);

Nota

En operaciones de concatenación de cadenas, el compilador de C# trata una cadena NULL igual que una cadena vacía.In string concatenation operations, the C# compiler treats a null string the same as an empty string.

Otro método para concatenar cadenas es String.Format.Other method to concatenate strings is String.Format. Este método funciona bien para compilar una cadena a partir de un número reducido de cadenas de componente.This method works well when you are building a string from a small number of component strings.

En otros casos, puede combinar cadenas en un bucle, donde no sabe cuántas cadenas de origen se combinan, y el número real de cadenas de origen puede ser bastante elevado.In other cases you may be combining strings in a loop, where you don't know how many source strings you are combining, and the actual number of source strings may be quite large. La clase StringBuilder se diseñó para estos escenarios.The StringBuilder class was designed for these scenarios. El código siguiente usa el método Append de la clase StringBuilder para concatenar cadenas.The following code uses the Append method of the StringBuilder class to concatenate strings.

// Use StringBuilder for concatenation in tight loops.
var sb = new System.Text.StringBuilder();
for (int i = 0; i < 20; i++)
{
    sb.AppendLine(i.ToString());
}
System.Console.WriteLine(sb.ToString());

Puede obtener más información sobre las razones para elegir la concatenación de cadenas o sobre la clase StringBuilder.You can read more about the reasons to choose string concatenation or the StringBuilder class

Otra opción para combinar cadenas a partir de una colección consiste en usar el método String.Concat.Another option to join strings from a collection is to use String.Concat method. Use el método String.Join si las cadenas de origen se deben separar con un delimitador.Use String.Join method if source strings should be separated by a delimeter. El código siguiente combina una matriz de palabras usando ambos métodos:The following code combines an array of words using both methods:

string[] words = { "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog." };

var unreadablePhrase = string.Concat(words);
System.Console.WriteLine(unreadablePhrase);

var readablePhrase = string.Join(" ", words);
System.Console.WriteLine(readablePhrase);

Por último, puede usar LINQ y el método Enumerable.Aggregate para combinar cadenas a partir de una colección.At last, you can use LINQ and the Enumerable.Aggregate method to join strings from a collection. Este método combina las cadenas de origen mediante una expresión lambda.This method combines the source strings using a lambda expression. La expresión lambda realiza el trabajo de agregar cada cadena a la acumulación existente.The lambda expression does the work to add each string to the existing accumulation. En el ejemplo siguiente se combina una matriz de palabras mediante la adición de un espacio entre cada palabra de la matriz:The following example combines an array of words by adding a space between each word in the array:

string[] words = { "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog." };

var phrase = words.Aggregate((partialPhrase, word) =>$"{partialPhrase} {word}");
System.Console.WriteLine(phrase);

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