2012-11-02 19 views
13

Bir char dizisinin bir bölümünü bir dizeye dönüştürmek istiyorum. Bunu yapmanın en iyi yolu nedir.Bir char dizisinin bir parçasını bir dizeye dönüştürme

Ben bütün dizinin

char[] chars = {'a', ' ', 's', 't', 'r', 'i', 'n', 'g'}; 
string s = new string(chars); 

ama ne örneğin 2 ila 4 sadece unsurlar hakkında aşağıdaki Yapabileceğim biliyor musunuz?

Ayrıca dizinin içinden geçip bunları ayıklayabileceğimi de biliyorum, ama bunu yapmanın daha özlü bir yolu olup olmadığını merak ettim.

cevap

31

kullanın karakter dizisi, bir dizin ve bir uzunluğa alır String constructor overload:

String text = new String(chars, 2, 3); // Index 2-4 inclusive 
+0

Mükemmel - Seç bir dönmez gibi bu derlenmeyecektir – Graham

1

Güncelleme

Ayrıca linq ile yapabilirsiniz.

char[] chars = {'a', ' ', 's', 't', 'r', 'i', 'n', 'g'}; 
char[] selected = chars.Where((c, index) => index >= 2 && index <= 3).ToArray(); 
string s = new String(selected); 
+0

teşekkür ederim dize. Ayrıca atlamayı kullanırım ve bunun yerine çağrıyı alırdım. –

+0

@JonSkeet Güncelleme ... –

+1

Şimdi işe yarayacak, ancak verimsiz ve aşırı derecede karmaşık olacaktı. –

2

Sen LINQ

char[] chars = { 'a', ' ', 's', 't', 'r', 'i', 'n', 'g' }; 
string str = new string(chars.Skip(2).Take(2).ToArray()); 

Ama ders dışı string overloaded constructor kullanabilir gitmek yoludur

-1
string a = "Hello"; 
char []b = a.ToCharArray(); 

string as=null; 

//note this line is important 
as = new string(b); 
+1

-1: bu soruya hiç cevap vermiyor –