2009-11-27 43 views
46

Tôi có một NSString như thế này:Loại bỏ ký tự dòng mới từ NSString

Hello 
World 
of 
Twitter 
Lets See this 
> 

Tôi muốn chuyển đổi nó để:

Hello World của Twitter Lets Xem này>

Tôi có thể làm cái này như thế nào? Tôi đang sử dụng Objective-C trên iPhone.

+7

downvoted vì bạn vẫn không thể chấp nhận một câu trả lời ... – anders

+1

ramesh, chấp nhận câu trả lời có lẽ? người đã giúp u và ít nhất u có thể làm là chấp nhận câu trả lời chính xác và tuyệt vời của họ. – GeneCode

Trả lời

125

chia chuỗi thành các thành phần và tham gia cùng họ bởi không gian:

NSString *newString = [[myString componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]] componentsJoinedByString:@" "]; 
+0

Tôi đã thử điều này nhưng xin lỗi không có người đàn ông may mắn –

+2

-stringByTrimmingCharactersInSet sẽ chỉ xóa các ký tự từ đầu và cuối chuỗi – Vladimir

+0

okay thats điểm tôi có ký tự dòng mới trên tất cả các nơi –

8

Tôi đang sử dụng

[...] 
myString = [myString stringByReplacingOccurrencesOfString:@"\n\n" withString:@"\n"]; 
[...] 

/Paul

79


tách chuỗi thành các thành phần và rejoining họ là một cách rất dài để làm điều này. Tôi cũng sử dụng cùng phương pháp mà Paul đã đề cập. Bạn có thể thay thế bất kỳ sự xuất hiện chuỗi nào. Hơn nữa với những gì Paul nói rằng bạn có thể thay thế ký tự dòng mới với không gian như thế này:

myString = [myString stringByReplacingOccurrencesOfString:@"\n" withString:@" "]; 
+2

Câu trả lời này là câu trả lời hay nhất vì nó làm cho nó rất rõ ràng những gì đang xảy ra (tất cả các ký tự dòng mới đang được thay thế bằng dấu cách) và không yêu cầu tạo ra một mảng không liên quan. y ramesh rao, Bạn thực sự nên chấp nhận câu trả lời giải quyết tốt nhất vấn đề để khuyến khích mọi người tiếp tục trả lời các câu hỏi của bạn. – theMikeSwan

+6

Điều này sẽ không nhất thiết phải thực hiện công việc — ít nhất bạn cũng có thể muốn bao gồm \ r. '[NSCharacterSet newlineCharacterSet]' là "Một bộ ký tự chứa các ký tự dòng mới (U + 000A – U + 000D, U + 0085)" vì vậy nó triệt để triệt để hơn. http://en.wikipedia.org/wiki/Newline – robotspacer

+1

Tôi đồng ý với @robotspacer thực sự. Nếu bạn yêu cầu bảo hiểm của * tất cả * ký tự dòng mới thì đường dẫn 'NSCharacterSet' là con đường để đi. Giải pháp của tôi vẫn loại bỏ 'U + 000A' và cho thấy việc sử dụng' stringByReplacingOccurrencesOfString' ít nhất vì vậy nó đáng để giữ ở đây. – imnk

2

trường hợp của tôi cũng chứa \r, bao gồm \n, [NSCharacterSet newlineCharacterSet] không hoạt động, thay vào đó, bằng cách sử dụng

htmlContent = [htmlContent stringByReplacingOccurrencesOfString:@"[\r\n]" 
                withString:@"" 
                 options:NSRegularExpressionSearch 
                  range:NSMakeRange(0, htmlContent.length)]; 

giải quyết của tôi vấn đề.

Btw, \\s sẽ xóa tất cả các khoảng trắng, không được mong đợi.

2

Cung cấp một phiên bản Swift 3.0 của câu trả lời của ở đây:

self.content = self.content.components(separatedBy: CharacterSet.newlines).joined(separator: " ") 

Cung cấp một phiên bản Swift 3.0 của @Kjuly '@hallski câu trả lời s ở đây (Lưu ý nó sẽ thay thế bất kỳ số lượng dây chuyền mới chỉ với một cú \ n . tôi muốn không sử dụng thường xuyên bày tỏ nếu có ai có thể chỉ cho tôi một cách tốt hơn):

self.content = self.content.replacingOccurrences(of: "[\r\\n]+", with: "\n", options: .regularExpression, range: Range(uncheckedBounds: (lower: self.content.startIndex, upper: self.content.endIndex))); 
Các vấn đề liên quan