2012-03-23 30 views
32

Ben gerçektenBölünmüş dize

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

düzenlemek gibi bir şey yapmak zorunda misiniz

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

içine "this is a test" dönüm gibi basit bir istiyorum: To açıklamak, bir char dizisi istemiyorum, ideal olarak bir dizi dizgi istiyorum. Yukarıdaki kodda yanlış bir şey görmüyorum, çünkü daha kolay bir yol olduğunu düşünürüm.

+0

Eğer gerçekten bir dize olarak her karakter istiyorsunuz bunu değiştirmek için bir for döngüsü kullanılır? –

+3

Kodunuzda sorun var "var test =" Bu bir testtir ".Select (x => x.ToString()) ToArray();'? –

cevap

72

:

İşte bir örnek C#

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

-1 Sanırım bir dizi dizisi istiyor. –

+1

İstediğim şey bu olmasa da, sanırım gerçekten istediğim şeyin bir nedeni olmadığını fark etmeye başladım. – mowwwalker

+0

@Walkerneo Gerçekten ne istiyorsunuz? -1? –

3

String.ToCharArray()'u kullanabilir ve daha sonra her bir kodu kodunuzda bir dize olarak kullanabilirsiniz. Bunun aradığınız şeylere inandırmaya

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

Strings zaten karakter indeksleyiciyi

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

içeriz. ..

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

Bu da çalışır ...

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

Ve bu ...

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

DÜZENLEME: Soruyu fark

konusunda güncellendi char [] dizilerine. Eğer bir dize [] dizi olması gerekir, burada C# her karakterin bir dize bölmek nasıl:

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

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

+1. Duh. Neden bunu düşünmedim? – David

+1

Bir "char" dizinleyiciye sahipler ve IEnumerable 'özelliğini kullanıyorlar, ancak aslında bir" char [] "veya bir" IList "değiller. – LukeH

+1

true. bunlar tip dizgidir, ancak nokta, geliştiricinin bireysel karakterlere erişmek için ToCharArray() öğesini veya [] dizesine herhangi bir dönüştürme türünü kullanması gerekmediğidir. –

1

bu deneyin:

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

Bu, zaten gönderdiğim kodun yaptığı işlemdir. – mowwwalker

0

Büyük olasılıkla ToCharArray() yönteme arıyoruz. Ancak, postanızda belirtildiği gibi string[] gerekli olması durumunda biraz daha fazla çalışma yapmanız gerekecektir.

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

Düzenleme: Dönüşümün çekiciliği konusunda endişeleniyorsanız, bunu bir uzantı yöntemine dönüştürmenizi öneririm.

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

OP'nin sorusuna bakın. Bunu zaten yaptı (daha kısa kod ile) –

2

Simple !!
bir satır:

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

bir karakter dizisine mesaj dönüştürme, sonra bir dize

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