2010-01-08 9 views

Respuesta

34

Así que quieres una serie de string, uno char cada uno:

string s = "abcdef"; 
string[] a = s.Select(c => c.ToString()).ToArray(); 

Esto funciona porque string implementa IEnumerable<char>. Así que Select(c => c.ToString()) proyectos cada char en el string en un string que representa que char y ToArray enumera la proyección y convierte el resultado en una matriz de string.

Si está utilizando una versión anterior de C#:

string s = "abcdef"; 
string[] a = new string[s.Length]; 
for(int i = 0; i < s.Length; i++) { 
    a[i] = s[i].ToString(); 
} 
+0

En realidad, aunque sus dos ejemplos le darán la misma matriz de cadenas al final, la segunda ("más antigua") forma es considerablemente más rápida. LINQ tiene que hacer una buena cantidad de traducciones generales antes de dividir el código en lo que es, esencialmente, el segundo conjunto de códigos. Pruebe una prueba de tiempo; el LINQ toma más del doble de tiempo que el ejemplo "a mano alzada". –

+0

Sospecho que hay algún problema con su método de sincronización. – jason

8

Sí.

"abcdef".ToCharArray(); 
+4

Dijo 'string' array, no' char' array. Tenga en cuenta que si pudiera 'String.Split' en el' char' vacío entre cada 'char' en' string' el resultado sería 'string []'. Este parece ser el comportamiento que está buscando. – jason

+2

Mi mal. Me tomé libertades tratando de interpretar la gramática incorrecta de su pregunta, pero mi interpretación fue claramente incorrecta. Gracias por mencionarlo. –

3

usted podría utilizar LINQ y hacer:

string value = "abcdef"; 
string[] letters = value.Select(c => c.ToString()).ToArray(); 

Esto se podrían obtener una matriz de cadenas en lugar de un conjunto de caracteres .

0

Pesa un poco más que los anteriores, pero no veo ningún revestimiento sencillo para esto.

List<string> results = new List<string>; 

foreach(Char c in "abcdef".ToCharArray()) 
{ 
    results.add(c.ToString()); 
} 


results.ToArray(); <-- done 

¿Qué pasa con string.split ???

3

¿Por qué no te

string value="abcd"; 

value.ToCharArray(); 

textbox1.Text=Convert.toString(value[0]); 

para mostrar la primera letra de la cadena; eso sería 'a' en este caso.

Cuestiones relacionadas