2012-11-02 42 views
13

Tôi muốn chuyển đổi một phần của mảng char thành chuỗi. Cách tốt nhất để làm điều đó là gì.Cách chuyển đổi một phần của mảng char thành chuỗi

Tôi biết tôi có thể làm như sau cho cả mảng

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

nhưng những gì về chỉ yếu tố 2-4 cho ví dụ?

Tôi cũng biết tôi có thể lặp qua mảng và trích xuất chúng, nhưng tôi tự hỏi liệu có cách nào ngắn gọn hơn để thực hiện nó hay không.

Trả lời

31

Sử dụng String constructor overload mà phải mất một mảng char, một chỉ số và chiều dài:

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

Tuyệt vời - cảm ơn bạn – Graham

1

Cập nhật

Bạn cũng có thể làm điều đó với 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

này sẽ không biên dịch như Chọn không trả lại một chuỗi. Tôi cũng sẽ sử dụng bỏ qua và thay vì điều này, nơi cuộc gọi. –

+0

@JonSkeet vừa cập nhật ... –

+1

Bây giờ nó sẽ hoạt động, nhưng sẽ không hiệu quả và quá phức tạp. –

2

Bạn có thể sử dụng LINQ

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

Nhưng tắt khóa học string overloaded constructor là con đường để đi

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

string as=null; 

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

-1: điều này không trả lời được câu hỏi –

Các vấn đề liên quan