2012-03-23 18 views
32

Quiero algo tan simple como encender "this is a test" enSeparar una cadena en la matriz de cadenas de caracteres individuales

new string[] {"t","h","i","s"," ","a"," ","t","e","s","t"}

¿Me realmente tiene que hacer algo como

test = "this is a test".Select(x => x.ToString()).ToArray();

edición: A aclarar, no quiero una matriz de caracteres, idealmente quiero una serie de cadenas. Realmente no veo nada mal con el código anterior, excepto por el hecho de que creo que hay una manera más fácil.

+0

¿Realmente quiere cada personaje como una cadena? –

+3

¿Qué hay de malo con su código 'var test =" this is an test ".Seleccione (x => x.ToString()). ToArray();'? –

Respuesta

72

Creo que esto es lo que está buscando:

char[] characters = "this is a test".ToCharArray(); 
+8

-1 Creo que quiere una matriz de cadenas. –

+1

Aunque esto no es lo que pedí, creo que estoy comenzando a darme cuenta de que realmente no hay una razón para lo que pregunté. – mowwwalker

+0

@Walkerneo ¿Qué es lo que realmente quieres? a -1? –

3

Puede simplemente usar String.ToCharArray() y luego tratar a cada char como una cadena en su código.

He aquí un ejemplo:

foreach (char c in s.ToCharArray()) 
     Debug.Log("one character ... " +c); 
29

cadenas en C# ya tienen un indexador carbón

string test = "this is a test"; 
Console.WriteLine(test[0]); 

Y. ..

if(test[0] == 't') 
    Console.WriteLine("The first letter is 't'"); 

Esto funciona también ...

Console.WriteLine("this is a test"[0]); 

Y esto ...

foreach (char c in "this is a test") 
    Console.WriteLine(c); 

EDITAR:

Noté la pregunta fue actualizado en lo que respecta a las matrices char []. Si debe tener un [] matriz de cadenas, aquí es cómo se divide una cadena en cada carácter en C#:

string[] test = Regex.Split("this is a test", string.Empty); 

foreach (string s in test) 
{ 
    Console.WriteLine(s); 
} 
+0

+1 por tocar un punto obvio que me perdí al publicar mi respuesta. Duh. ¿Por qué no pensé en eso? – David

+1

Tienen un indizador 'char', e implementan' IEnumerable ', pero en realidad no son un' char [] 'ni un' IList '. – LukeH

+1

cierto. son de tipo cadena, pero el punto es que el desarrollador no necesita usar ToCharArray() o cualquier tipo de conversión a la cadena [] para acceder a los caracteres individuales. –

1

Prueba esto:

var charArray = "this is a test".ToCharArray().Select(c=>c.ToString()); 
+1

Esto ya es lo que está haciendo el código que publiqué. – mowwwalker

0

Lo más probable es que usted está buscando el método ToCharArray(). Sin embargo, necesitará hacer un poco más de trabajo si se requiere un string[], como anotó en su publicación.

string str = "this is a test."; 
    char[] charArray = str.ToCharArray(); 
    string[] strArray = str.Select(x => x.ToString()).ToArray(); 

Editar: Si le preocupa la concisión de la conversión, le sugiero que la convierta en un método de extensión.

public static class StringExtensions 
{ 
    public static string[] ToStringArray(this string s) 
    { 
     if (string.IsNullOrEmpty(s)) 
      return null; 

     return s.Select(x => x.ToString()).ToArray(); 
    } 
} 
+1

Consulte la pregunta de OP. Él ya lo hizo (con código más corto) –

2

Simple !!
una línea:

var res = test.Select(x => new string(x, 1)).ToArray(); 
0

convertir el mensaje en una matriz de caracteres, a continuación, utilizar un bucle para cambiarlo a una cadena

string message = "This Is A Test"; 
string[] result = new string[message.Length]; 
char[] temp = new char[message.Length]; 

temp = message.ToCharArray(); 

for (int i = 0; i < message.Length - 1; i++) 
{ 
    result[i] = Convert.ToString(temp[i]); 
} 
Cuestiones relacionadas