NSString với \ n hoặc ngắt dòng


100

Có ai biết cách sử dụng ngắt dòng trong NSString không? Tôi cần làm điều gì đó như thế này -

[NSString stringWithFormat:@"%@,\n%@", mystring1,mystring2];

11
Bạn đã thực sự thử điều này? Bởi vì nếu bạn có, bạn sẽ có câu trả lời cho mình.
Dave DeLong

không, nó không hoạt động. tôi thấy \ n được nối vào chuỗi nhưng khi nó hiển thị, nó nằm trên cùng một dòng.
Dave

4
Hãy đảm bảo rằng thông báo loại NSString này mà bạn đang hiển thị không sử dụng hỗ trợ HTML. Nếu sử dụng hỗ trợ HTML, nó sẽ không xử lý \ n. Hy vọng tôi hữu ích. Cảm ơn, Aby
Abdul Yasin

Câu trả lời:


177

Tôi vừa gặp phải vấn đề tương tự khi quá tải-mô tả cho một lớp con của NSObject. Trong trường hợp này, tôi có thể sử dụng ký tự xuống dòng (\ r) thay vì dòng mới (\ n) để tạo ngắt dòng.

[NSString stringWithFormat:@"%@\r%@", mystring1,mystring2];


1
hoàn hảo! Chỉ cần lưu ý rằng bạn có một dấu phẩy un cần thiết sau khi% đầu tiên @
Sam Spencer

1
@OMGPOP, lưu ý rằng để phát triển iOS, bạn cũng cần xem câu trả lời của tôi bên dưới.
Andy A

Hoàn hảo làm việc cho tôi, rất cảm ơn vì đã chia sẻ điều này.
swiftBoy

32

Nếu chuỗi của bạn đang ở dạng UIView (ví dụ: UILabel), bạn cũng cần đặt số dòng thành 0

myView.numberOfLines=0;

26

Tôi nhận thấy rằng khi tôi đang đọc các chuỗi trong một .plisttệp, các lần xuất hiện của "\n"được phân tích cú pháp thành "\\n". Giải pháp cho tôi là thay thế các lần xuất hiện "\\n"bằng "\n". Ví dụ: với một phiên bản NSStringcó tên được myStringđọc trong .plisttệp của tôi , tôi phải gọi ...

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

... trước khi gán nó cho UILabelphiên bản của tôi ...

myLabel.text = myString;

2
Đây là kịch bản chính xác của tôi, Adil. Cảm ơn câu trả lời của bạn!
iOS4Life

12
NSString *str1 = @"Share Role Play Photo via Facebook, or Twitter for free coins per photo.";
NSString *str2 = @"Like Role Play on facebook for 50 free coins.";
NSString *str3 = @"Check out 'What's Hot' on other ways to receive free coins";


NSString *msg = [NSString stringWithFormat:@"%@\n%@\n%@", str1, str2, str3];

8

hãy thử điều này (stringWithFormat phải bắt đầu bằng chữ thường)

 [NSString stringWithFormat:@"%@\n%@",string1,string2];

2

\ n \ r có vẻ hiệu quả với tôi.

Tôi đang sử dụng Xcode 4.6 với IOS 6.0 làm mục tiêu. Đã thử nghiệm trên iPhone 4S. Hãy thử nó một mình.

Feng Chiu


1
Đây không phải là một câu trả lời..Xin vui lòng viết những điều này trong nhận xét.
Shivaay

2

Ký tự ngắt dòng cho NSString là \ r

cách sử dụng đúng [NSString StringWithFormat:@"%@\r%@",string1,string2];

\ r ----> ký tự xuống dòng


"StringWithFormat" không hợp lệ; nó phải là "stringWithFormat" (phải bắt đầu bằng chữ thường 's')
SpokaneDude

0

\nlà cách ưa thích để ngắt dòng. \rcũng sẽ hoạt động. \n\rhoặc \r\nquá mức cần thiết và có thể khiến bạn gặp sự cố sau này. Ca cao, có các ký tự ngắt dòng và đoạn văn cụ thể cho các mục đích sử dụng cụ thể NSParagraphSeparatorCharacter, NSLineSeparatorCharacter. Đây là nguồn của tôi cho tất cả những điều trên.


0

Trong Swift 3, nó đơn giản hơn nhiều

let stringA = "Terms and Conditions"
let stringB = "Please read the instructions"

yourlabel.text =  "\(stringA)\n\(stringB)"

hoặc nếu bạn đang sử dụng một textView

yourtextView.text =  "\(stringA)\n\(stringB)"

Bài đăng được gắn nhãn cụ thể cho Objective-C.
dylan

0

Trong trường hợp \ n hoặc \ r không hoạt động và nếu bạn đang làm việc với uiwebview và cố gắng tải html bằng thẻ <br> để chèn dòng mới. Đừng chỉ sử dụng thẻ <br> trong NSString stringWithFormat.

Thay vào đó, hãy sử dụng giống nhau bằng cách thêm vào. tức là bằng cách sử dụng stringByAppendingString

 yourNSString = [yourNSString stringByAppendingString:@"<br>"];
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.