2012-04-10 21 views
17

Tôi có một chuỗi dài.Thêm phương tiện vận chuyển về một chuỗi

string s1 = "'99024','99050','99070','99143','99173','99191','99201','99202','99203','99204','99211','99212','99213','99214','99215','99217','99218','99219','99221','99222','99231','99232','99238','99239','99356','99357','99371','99374','99381','99382','99383','99384','99385','99386','99391','99392'"; 

Tôi muốn

string s2 = 
      "'99024', 
      '99050', 
      '99070', 
      '99143', 
      '99173', 
      '99191', 
      '99201', 
      '99202',...."; 

Nói cách khác. Có thể nó thích:

string s2 = "'99024',"+'\n'+"'99050',"+'\n'+"'99070',"+'\n'+"'99143',"+'\n'+.....; 

Tôi cần một mã súc tích. Có thể LINQ. Cảm ơn.

+0

@ user1108948 về mặt kỹ thuật, những gì bạn muốn "dòng mới" không "trả về vận chuyển" – codechimp

Trả lời

20
string s2 = s1.Replace(",", ",\n"); 
+0

Có thể bạn sẽ muốn s1.Replace (",", ", \ n"). TrimEnd (',', '\ n'); để loại bỏ cặp đuôi. – blowdart

+0

Tôi biết, chỉ để được nhanh chóng, bài mà không cần thử nghiệm :) –

+0

@ blowdart Bạn giả sử của họ là một dấu phẩy. Không có. – Servy

34
string s2 = s1.Replace(",", "," + Environment.NewLine); 

Ngoài ra, chỉ từ góc độ hiệu suất, dưới đây là cách ba giải pháp hiện tại tôi đã nhìn thấy chồng lên trên 100k lặp:

ReplaceWithConstant   - Ms: 328, Ticks: 810908 
ReplaceWithEnvironmentNewLine - Ms: 310, Ticks: 766955 
SplitJoin      - Ms: 483, Ticks: 1192545 

ReplaceWithConstant:

string s2 = s1.Replace(",", ",\n"); 

ReplaceWithEnvironmentNewLine:

string s2 = s1.Replace(",", "," + Environment.NewLine); 

SplitJoin:

string s2 = String.Join("," + Environment.NewLine, s1.Split(',')); 

ReplaceWithEnvironmentNewLineReplaceWithConstant nằm trong biên độ lỗi của mỗi khác, do đó chức năng không có sự khác biệt.

Sử dụng Environment.NewLine nên được ưu tiên hơn "\n" để có thể đọc được và tính nhất quán tương tự như sử dụng String.Empty thay vì "".

+0

Tôi nghĩ rằng không ai kiểm tra mã của anh ta. nó không phải 'thay thế ' –

+0

@ L.B Tôi thường đăng bài sau đó kiểm tra kể từ thời gian phản ứng không may là rất quan trọng. Bị bắt lỗi trong LinqPad một vài giây sau khi gửi bài. –

+0

Xem nhận xét của tôi trong câu trả lời khác :) –

0
string s2 = s1.Replace(",", ",\n") + ",...."; 
0

Một tùy chọn khác:

string s2 = String.Join("," + Environment.NewLine, s1.Split(',')); 
0

Environment.NewLine nên được sử dụng như Dan Rigby nói nhưng có một vấn đề với String.Empty. Nó sẽ luôn luôn trống rỗng không có vấn đề nếu nó được đọc trước hoặc sau khi nó đọc. Tôi đã có một vấn đề trong dự án của tôi ngày hôm qua với điều đó. Tôi đã gỡ bỏ nó và nó hoạt động theo cách mà nó được cho là. Tốt hơn là khai báo biến và sau đó gọi nó khi cần. String.Empty sẽ luôn giữ nó rỗng trừ khi biến cần được khởi tạo mà chỉ sau đó bạn nên sử dụng String.Empty. Nghĩ rằng tôi sẽ ném cái này ra cho mọi người như tôi đã trải nghiệm nó.

-1

chuỗi s2 = s1.Replace (",", ", \ r \ n");

+0

Câu trả lời này đã tồn tại và bạn đã khoảng 5 năm quá muộn. Tại sao câu trả lời cho một câu hỏi cũ mà không thêm bất cứ điều gì mới? – gilliduck

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