2011-01-30 21 views
88

Me gustaría convertir una matriz de cadenas en una sola cadena.convert string array a la cadena

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

Me gustaría tener algo así como "Hello World!"

Respuesta

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

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

string.Join("", test); 
+3

+1 - Quité el espacio en la unión para hacer esto correcto, como lo señaló @davidg – jmort253

+0

Gracias. No noté el espacio posterior, aunque lo copié pegado a mi respuesta. –

+2

También necesitaba poner un separador entre mis cadenas (coma y espacio) así que usé: 'var separator =", ";' 'string.Join (separator, test);' – ripegooseberry

11

Probar:

String.Join("", test); 

que debe devolver una cadena que une los dos elementos juntos. "" indica que desea que las cadenas se unan sin ningún separador.

+0

¿No harí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 estaba allí, entonces estarías en lo correcto, y usar '" "' como separador tendría más sentido. – davidg

+0

+1 - ¡Buen punto! No vi el espacio extra. – jmort253

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(); 
    } 
+3

Esto simplemente implementa manualmente 'string.Join (" ", array)' (excepto que el suyo agrega un espacio al final). ¿Por qué no usar el de la biblioteca? – davidg

+1

@davidg - Ashwini es probablemente nuevo. Aprender a utilizar 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 los círculos que les rodean, y luego ven el valor en las bibliotecas de códigos y la reutilizan. – jmort253

+0

lo que recuerdo, traté de ayudar, eso es todo ... si alguien tiene una mejor solución, siempre tienes la libertad de publicarla ... @jmort: han pasado 4 años desde que estoy trabajando ... no tengo la mentalidad de de lo que hablas abt ... nadie es perfecto ... a lo largo de los años de experiencia que aprendes ... espera no niegues este hecho ... – programmer

-3

De esta manera:

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

También puede utilizar un bucle:

for(int i=0; i<2; i++) 
    str += test[i]; 
5

Un simple string.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.), entonces, string.join() se debe utilizar.

string[] test = new string[2]; 

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

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

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

0

He utilizado esta forma de hacer mi proyecto más rápido:

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

return text; 

RichTextBox.Text convertirá automáticamente su arreglo en una cadena de varias líneas!

6

Una opción un poco más rápido que el uso de la ya mencionada uso del método es el método Join()Concat(). No requiere un parámetro de delimitador vacío como Join(). 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.

-1

En la respuesta aceptada, String.Join no es una buena práctica para su uso. String.Concat debería haberse utilizado 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 debe moverse 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); 
1

Aggregate también se puede utilizar para misma.

string[] test = new string[2]; 
test[0] = "Hello "; 
test[1] = "World!"; 
string joinedString = test.Aggregate((prev, current) => prev + " " + current);