Compartir a través de


Procedimiento para concatenar varias cadenas (Guía de C#)

La concatenación es el proceso de agregar una cadena al final de otra cadena. Las cadenas se concatenan con el operador +. 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. En cambio, para las variables de cadena, la concatenación solo se produce en tiempo de ejecución.

Nota:

Los ejemplos de C# de este artículo se ejecutan en el Try.NET ejecutor de código en línea y entorno de pruebas. Haga clic en el botón Ejecutar para ejecutar un ejemplo en una ventana interactiva. Una vez que se ejecuta el código, puede modificar y ejecutar el código modificado si vuelve a hacer clic en Ejecutar. 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#.

Consejo (if the meaning of "Tip" is advice or suggestion)

Puede usar el asistente de IA para concatenar cadenas con GitHub Copilot.

Literales de cadena

En el ejemplo siguiente se divide un literal de cadena larga en cadenas más pequeñas para mejorar la legibilidad en el código fuente. El código concatena las cadenas más pequeñas para crear el literal de cadena larga. Los elementos se concatenan en una sola cadena en tiempo de compilación. No existe ningún costo de rendimiento en tiempo de ejecución independientemente del número de cadenas implicadas.

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

operadores + y +=

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. El operador + es sencillo de usar y genera un código intuitivo. Aunque use varios operadores + en una instrucción, el contenido de la cadena se copiará solo una vez. En el código siguiente se muestran ejemplos del uso de los operadores + y += para concatenar cadenas:

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

Interpolación de cadenas

En algunas expresiones, es más fácil concatenar cadenas mediante la interpolación de cadena, como se muestra en este código:

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.

Puede utilizar la interpolación de cadenas para inicializar una cadena constante cuando todas las expresiones utilizadas para los marcadores de posición son también cadenas constantes.

String.Format

Otro método para concatenar cadenas es String.Format. Este método funciona bien cuando se crea una cadena a partir de un número reducido de cadenas de componente.

StringBuilder

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 elevado. La clase StringBuilder se diseñó para estos escenarios. El código siguiente usa el método Append de la clase StringBuilder para concatenar cadenas.

// 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.

String.Concat o String.Join

Otra opción para combinar cadenas a partir de una colección consiste en usar el método String.Concat. Usar el método String.Join si un delimitador debe separar las cadenas de origen. El código siguiente combina una matriz de palabras usando ambos métodos:

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

LINQ y Enumerable.Aggregate

Por último, puede usar LINQ y el método Enumerable.Aggregate para combinar cadenas a partir de una colección. Este método combina las cadenas de origen mediante una expresión lambda. La expresión lambda realiza el trabajo de agregar cada cadena a la acumulación existente. En el ejemplo siguiente se combina una matriz de palabras y se agrega un espacio entre cada palabra de la matriz:

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

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

Esta opción puede provocar más asignaciones que otros métodos para concatenar colecciones, ya que crea una cadena intermedia para cada iteración. Si la optimización del rendimiento es fundamental, considere la clase StringBuilder o los métodos String.Concat o String.Join para concatenar una colección, en vez de Enumerable.Aggregate.

Uso de GitHub Copilot para concatenar cadenas

Puede usar GitHub Copilot en el IDE para generar código de C# para concatenar varias cadenas. Puede personalizar la solicitud para especificar cadenas y el método que se va a usar según sus requisitos.

En el texto siguiente se muestra un mensaje de ejemplo para Copilot Chat.

Generate C# code to use String.Format to build an output string "Hi x, today's date is y. You are z years old." where x is "John",  y is today's date and z is the birthdate January 1, 2000. The final string should show date in the full format mm/dd/yyyy. Show output.

GitHub Copilot funciona con IA, por lo que es posible que se produzcan sorpresas y errores. Para obtener más información, consulte Copilot: Preguntas frecuentes.

Obtenga más información sobre GitHub Copilot en Visual Studio y GitHub Copilot en VS Code.

Consulte también