convertir matriz de cadena a cadena

155

Me gustaría convertir una matriz de cadenas en una sola cadena.

string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";

Me gustaría tener algo como "¡Hola mundo!"

John Saunders
fuente

Respuestas:

280
string[] test = new string[2];

test[0] = "Hello ";
test[1] = "World!";

string.Join("", test);
Dave Ward
fuente
3
+1: eliminé el espacio en Join para corregirlo, como lo señaló @davidg
jmort253
Gracias. No noté el espacio final, aunque lo copié lo pegué directamente en mi respuesta.
Dave Ward,
2
También necesitaba poner un separador entre mis cuerdas (coma y espacio), así que utiliza: var separator = ", "; string.Join(separator , test);
drpawelo
55
Gran respuesta. Sin embargo, sugeriría usar en string.Join(string.Empty, test)lugar de usar un empty-paranthesis.
Ahora el que no debe ser nombrado.
37

Una opción un poco más rápida que usar el uso ya mencionado del Join()método es el método Concat () . No requiere un parámetro delimitador vacío como lo Join()hace. Ejemplo:

string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";

string result = String.Concat(test);

Por lo tanto, es probable que sea más rápido.

Catalizador de calidad
fuente
1
Concates mejor, en el código interno de Join, agregará un separador después de cada elemento. Pero Concatno tiene tales códigos, es más simple y más directo que Join. Esta es la respuesta más adecuada.
Squirrel.Downy
22

Tratar:

String.Join("", test);

que debería devolver una cadena que une los dos elementos. ""indica que desea que las cadenas se unan sin separadores.

davidg
fuente
¿No sería eso "HelloWorld!" sin un espacio entre las palabras?
jmort253
1
@ jmort253 - La cadena original "Hello "en la pregunta ya tenía un espacio final. Si el espacio no estuviera allí, estaría en lo correcto, y usarlo " "como separador tendría más sentido.
davidg
19

Una cadena simple. Concat () es lo que necesita.

string[] test = new string[2];

test[0] = "Hello ";
test[1] = "World!";

string result = string.Concat(test);

Si también necesita agregar un separador (espacio, coma, etc.), use string.Join ().

string[] test = new string[2];

test[0] = "Red";
test[1] = "Blue";

string result = string.Join(",", test);

Si tiene que realizar esto en una matriz de cadenas con cientos de elementos que cadenas. Unir () es mejor por punto de vista de rendimiento. Simplemente da un argumento "" (en blanco) como separador. StringBuilder también se puede usar por razones de rendimiento, pero hará que el código sea un poco más largo.

ePandit
fuente
Concaty Joinson más rápidos que StringBuildersi tienes 4 o menos cadenas para concatenar.
Catalizador de calidad el
3

Aggregate También se puede utilizar para lo mismo.

string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string joinedString = test.Aggregate((prev, current) => prev + " " + current);
vivek nuna
fuente
1
Este es un método extremadamente derrochador para implementar String.Joindebido a las múltiples cadenas adicionales construidas. Lea stackoverflow.com/questions/217805/… para ver la variante adecuada de Aggregate.
Alexei Levenkov
1
    string ConvertStringArrayToString(string[] array)
    {
        //
        // Concatenate all the elements into a StringBuilder.
        //
        StringBuilder strinbuilder = new StringBuilder();
        foreach (string value in array)
        {
            strinbuilder.Append(value);
            strinbuilder.Append(' ');
        }
        return strinbuilder.ToString();
    }
programador
fuente
3
Esto solo se implementa manualmente string.Join(" ", array)(excepto que el suyo agrega un espacio final). ¿Por qué no solo usar el de la biblioteca?
davidg
1
@davidg - Ashwini es probablemente nuevo. Aprender a usar las herramientas existentes y superar la mentalidad de "debo hacerlo yo mismo" de la universidad lleva un tiempo acostumbrarse. Lo hizo por mi. Finalmente, las personas se preguntan por qué sus colegas pueden codificar círculos a su alrededor, y luego ven el valor en las bibliotecas de códigos y lo reutilizan.
jmort253
lo que recordaba, traté de ayudar, eso es todo ... si alguien tiene una solución mejor, siempre puedes publicarla ... @jmort: han pasado 4 años desde que estoy trabajando ... no tengo la mentalidad de wht ur hablar ABT ... alguien no es perfecto ... con los años de experiencia que se aprende ..hope u no niegan este hecho ..
programador
@ Ashshini - No estaba tratando de ofenderte. Solo respondí la pregunta de @ davidg en base a mi experiencia trabajando con diferentes ingenieros.
jmort253
2
Además, la cadena concatenada tendrá un espacio extra pegado al final. Entonces esto no cumple completamente con la pregunta.
jmort253
0

Utilicé esta forma para acelerar mi proyecto:

RichTextBox rcbCatalyst = new RichTextBox()
{
    Lines = arrayString
};
string text = rcbCatalyst.Text;
rcbCatalyst.Dispose();

return text;

¡RichTextBox.Text convertirá automáticamente su matriz en una cadena multilínea!

Bamdad
fuente
-1

En la respuesta aceptada, String.Join no es la mejor práctica por su uso. String.Concat debería haberse usado ya que OP incluía un espacio final en el primer elemento: "Hola" (en lugar de usar un delimitador nulo).

Sin embargo, dado que OP solicitó el resultado "¡Hola Mundo!", String.Join sigue siendo el método apropiado, pero el espacio en blanco final se debe mover al delimitador.

// string[] test = new string[2];

// test[0] = "Hello ";
// test[1] = "World!";

string[] test = { "Hello", "World" }; // Alternative array creation syntax 
string result = String.Join(" ", test);
Sir Charles Facehuggersworth
fuente
-4

Me gusta esto:

string str= test[0]+test[1];

También puedes usar un bucle:

for(int i=0; i<2; i++)
    str += test[i];
Canaán
fuente