2009-05-16 56 views

Trả lời

162

này sẽ cắt bỏ bất kỳ sự kết hợp của kí tự xuống dòng và dòng mới từ cuối s:

s = s.TrimEnd(new char[] { '\r', '\n' }); 

Sửa: Hoặc như JP vui lòng chỉ ra, bạn có thể đánh vần mà ngắn gọn hơn như:

s = s.TrimEnd('\r', '\n'); 
+8

Hãy chú ý của từ khóa params trong việc kê khai của TrimEnd, nó cho phép bạn vượt qua nhiều trường hợp của một nhân vật thay vì của mảng. http://msdn.microsoft.com/en-us/library/w5zay9db(VS.71).aspx –

+2

Làm thế nào về điều này: s = s.TrimEnd (System.Environment.NewLine.ToCharArray()); –

+4

Tôi đã viết C# kể từ khi v1.0 xuất hiện (10 năm trước). Bây giờ bạn nói cho tôi biết về TrimEnd. Doh! – s15199d

28

này nên làm việc ...

var tst = "12345\n\n\r\n\r\r"; 
var res = tst.TrimEnd('\r', '\n'); 
4

Nếu luôn có một CRLF duy nhất, sau đó:

myString = myString.Substring(0, myString.Length - 2); 

Nếu nó có thể hoặc có thể không có nó, sau đó:

Regex re = new Regex("\r\n$"); 
re.Replace(myString, ""); 

Cả hai (theo thiết kế), sẽ loại bỏ tối đa là một CRLF đơn . Cache regex để thực hiện.

9
String temp = s.replace("\r\n","").trim(); 

s là chuỗi gốc.

+10

Điều đó cũng sẽ: 1) Xóa \ r \ n từ giữa chuỗi, 2) Xóa bất kỳ ký tự trắng nào từ đầu chuỗi và 3) xóa bất kỳ ký tự khoảng trắng nào từ cuối chuỗi. – RichieHindle

+0

Đúng, tôi giả định chỉ có một/r/n ở cuối. Nó không được đề cập trong bài gốc. Tôi không chắc chắn rằng warrents một phiếu bầu -1 – Crash893

+0

Chính xác những gì tôi đang tìm kiếm. Cảm ơn. – NotMe

4

Đối với chúng tôi VBers:

TrimEnd(New Char() {ControlChars.Cr, ControlChars.Lf}) 
2
string k = "This is my\r\nugly string. I want\r\nto change this. Please \r\n help!"; 
k = System.Text.RegularExpressions.Regex.Replace(k, @"\r\n+", " "); 
0
varName.replace(/[\r\n]/mg, '')            
3

Đây là quá dễ dàng - đối với tôi tôi lọc ra các email nhất định. Tôi đang viết bộ lọc email tùy chỉnh của riêng mình. Với \ r và/hoặc \ n trong chuỗi nó đã xóa sạch tất cả các mục thay vì lọc.

Vì vậy, tôi vừa lọc filter = filter.Remove ('\ n') và filter = filter.Remove ('\ r'). Tôi đang tạo bộ lọc của mình sao cho người dùng cuối có thể sử dụng Notepad để chỉnh sửa trực tiếp tệp nên không thể nói nơi những ký tự này có thể tự nhúng - có thể khác với lúc bắt đầu hoặc kết thúc chuỗi. Vì vậy, loại bỏ tất cả đều làm điều đó.

Các mục nhập khác đều hoạt động nhưng Xóa có thể dễ dàng nhất?

Tôi đã học được nhiều hơn một chút về Regex từ bài đăng này - khá thú vị khi sử dụng ở đây.

+0

Có vẻ như bạn chỉ có thể thực hiện 'filter = filter.Remove ('\ n'). Xóa ('\ r');' –

17

Nếu bạn đang sử dụng nhiều nền tảng, bạn sẽ an toàn hơn khi sử dụng phương pháp này.

value.TrimEnd(System.Environment.NewLine.ToCharArray()); 

Nó sẽ tính đến các ký tự dòng mới và ký tự trả về.

+0

phương thức của JP - 'tst.TrimEnd ('\ r', ' \ n ') '- là hợp lý" an toàn "trong thực tế vì các EOL chính là [hiện tại] chỉ là các combo khác nhau của' \ r' và '\ n', nhưng alexw là câu trả lời" đúng ". * Hãy để CLR cho bạn biết những ký tự nào trong dòng mới của nền tảng này. * [EOL không phải lúc nào cũng là combo 0D và 0As] (http://en.wikipedia.org/wiki/Newline#Representations) – ruffin

+0

Tôi đã từng sử dụng 'Environment.NewLine' nhưng nó dường như không xử lý các trường hợp' \ r' hiện diện mà không có '\ n'. 'TrimEnd ('r', '\ n')' có vẻ đáng tin cậy hơn trong trường hợp này. –

+2

Có thể đây thực sự là một vấn đề đa nền tảng, và tháng mười hai cần phải loại bỏ cụ thể cả hai \ r \ n, bất kể môi trường hệ thống nói gì. –

5
s.TrimEnd(); 

Ở trên là tất cả những gì tôi cần để xóa '\ r \ n' từ cuối chuỗi.

Câu trả lời được bỏ phiếu có vẻ sai với tôi. Thứ nhất, nó không hoạt động khi tôi cố gắng, thứ hai, nếu nó đã làm việc tôi mong đợi rằng s.TrimEnd ('\ r', '\ n') sẽ chỉ xóa hoặc là một '\ r' hoặc '\ n', vì vậy tôi phải chạy nó qua chuỗi của tôi hai lần - một lần cho thời điểm '\ n' đã ở cuối và lần thứ hai khi '\ r' ở cuối (giờ là '\ n' đã bị xóa).

1

tôi sử dụng rất nhiều xóa mức

String donen = "lots of stupid whitespaces and new lines and others..." 

//Remove multilines 
donen = Regex.Replace(donen, @"^\s+$[\r\n]*", "", RegexOptions.Multiline); 
//remove multi whitespaces 
RegexOptions options = RegexOptions.None; 
Regex regex = new Regex("[ ]{2,}", options); 
donen = regex.Replace(donen, " "); 
//remove tabs 
char tab = '\u0009'; 
donen = donen.Replace(tab.ToString(), ""); 
//remove endoffile newlines 
donen = donen.TrimEnd('\r', '\n'); 
//to be sure erase new lines again from another perspective 
donen.Replace(Environment.NewLine, ""); 

và bây giờ chúng tôi có một sạch một hàng

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