2010-01-08 39 views

Trả lời

34

Vì vậy, bạn muốn có một mảng của string, một char mỗi:

string s = "abcdef"; 
string[] a = s.Select(c => c.ToString()).ToArray(); 

này hoạt động vì string thực hiện IEnumerable<char>. Vì vậy, Select(c => c.ToString()) dự án mỗi char trong các string đến một string đại diện cho rằng charToArray liệt kê phép chiếu và chuyển đổi kết quả thành mảng string.

Nếu bạn đang sử dụng một phiên bản cũ của C#:

string s = "abcdef"; 
string[] a = new string[s.Length]; 
for(int i = 0; i < s.Length; i++) { 
    a[i] = s[i].ToString(); 
} 
+0

Trên thực tế, mặc dù cả hai ví dụ của bạn sẽ cung cấp cho bạn cùng một mảng chuỗi ở cuối, cách thứ hai ("cũ hơn") là nhanh hơn đáng kể. LINQ phải làm một số tiền hợp lý của bản dịch trên cao trước khi phá vỡ mã xuống đến những gì, về bản chất, bộ mã thứ hai. Thử kiểm tra thời gian; LINQ mất hơn hai lần miễn là ví dụ "dài". –

+0

Tôi nghi ngờ rằng có điều gì đó sai trái với phương pháp định thời gian của bạn. – jason

8

Có.

"abcdef".ToCharArray(); 
+4

Anh ấy nói mảng 'chuỗi', không phải mảng' char'. Lưu ý rằng nếu bạn có thể 'String.Split' trên' char' trống giữa mỗi 'char' trong' string' thì kết quả sẽ là một 'string []'. Đây dường như là hành vi mà anh ta đang tìm kiếm. – jason

+2

Tệ của tôi. Tôi đã tự do cố gắng để giải thích ngữ pháp không đúng của câu hỏi của mình, nhưng cách giải thích của tôi rõ ràng là sai. Cảm ơn đã chỉ ra điều đó. –

3

Bạn có thể sử dụng LINQ và làm:

string value = "abcdef"; 
string[] letters = value.Select(c => c.ToString()).ToArray(); 

Điều này sẽ giúp bạn có một mảng các chuỗi thay vì một loạt các ký tự .

0

Bit nhiều hơn số lượng lớn so với những điều trên nhưng tôi không thấy bất kỳ lớp lót đơn giản nào cho việc này.

List<string> results = new List<string>; 

foreach(Char c in "abcdef".ToCharArray()) 
{ 
    results.add(c.ToString()); 
} 


results.ToArray(); <-- done 

Có gì sai với string.split ???

3

Tại sao bạn không chỉ

string value="abcd"; 

value.ToCharArray(); 

textbox1.Text=Convert.toString(value[0]); 

để hiển thị các chữ cái đầu tiên của chuỗi; đó sẽ là 'a' trong trường hợp này.

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