2012-11-02 14 views
13

Chcę przekonwertować część tablicy znaków na ciąg znaków. Jaki jest najlepszy sposób na zrobienie tego.Jak przekonwertować część tablicy znaków na ciąg znaków

wiem, że mogę wykonać następujące czynności dla całej tablicy

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

ale tylko co około 2 do 4 elementów, na przykład?

Wiem też, że mogę przechodzić przez macierz i wydobywać je, ale zastanawiałem się, czy istnieje bardziej zwięzły sposób robienia tego.

Odpowiedz

31

Korzystanie z String constructor overload która przyjmuje tablicę char, indeks i długości:

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

Excellent - dziękuję – Graham

1

Aktualizacja

Można również zrobić to z LINQ.

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

Nie będzie to skompilować jako wybierania nie zwróci strunowy. Chciałbym również użyć pominąć i wziąć zamiast tego, gdzie połączenie. –

+0

@JonSkeet właśnie zaktualizowany ... –

+1

Teraz będzie działać, ale będzie nieefektywny i nadmiernie skomplikowany. –

2

Możesz używać LINQ

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

Ale poza oczywiście string overloaded constructor jest droga

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

string as=null; 

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

-1: to wcale nie odpowiada na pytanie –

Powiązane problemy