NSString с \ n или разрывом строки


100

Кто-нибудь знает, как использовать разрывы строк в NSString? Мне нужно сделать что-то вроде этого -

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

11
Вы действительно пробовали это? Потому что, если бы вы это сделали, вы бы получили свой ответ.
Дэйв Делонг

нет, это не сработало. Я вижу, что к строке добавлен \ n, но когда он отображается, он находится в той же строке.
Дэйв

4
Убедитесь, что это сообщение типа NSString, которое вы показываете, не поддерживает HTML. Если используется поддержка HTML, это не лечит \ n. Надеюсь, я буду полезен. Спасибо, Абы
Абдул Ясин

Ответы:


177

Я столкнулся с той же проблемой при перегрузке -description для подкласса NSObject. В этой ситуации я смог использовать возврат каретки (\ r) вместо новой строки (\ n), чтобы создать разрыв строки.

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


1
идеальный! Просто обратите внимание, что у вас есть ненужная запятая после первого% @
Сэм Спенсер

1
@OMGPOP, обратите внимание, что для разработки iOS вам также нужно проверить мой ответ ниже.
Энди А.

Идеально сработал для меня, огромное спасибо, что поделился этим.
swiftBoy

32

Если ваша строка идет в UIView (например, UILabel), вам также необходимо установить количество строк на 0

myView.numberOfLines=0;

26

Я обнаружил, что когда я читал строки из .plistфайла, вхождения "\n"обрабатывались как "\\n". Решение для меня было заменить вхождений "\\n"с "\n". Например, учитывая экземпляр NSStringименованного myStringчтения из моего .plistфайла, мне пришлось вызвать ...

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

... прежде чем назначить его моему UILabelэкземпляру ...

myLabel.text = myString;

2
Это был мой точный сценарий, Адиль. Спасибо за Ваш ответ!
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

попробуйте это (stringWithFormat должен начинаться с нижнего регистра)

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

2

\ n \ r, похоже, у меня работает.

Я использую Xcode 4.6 с IOS 6.0 в качестве цели. Проверено на iPhone 4S. Попробуйте сами.

Фэн Чиу


1
это не ответ ... напишите об этом в комментариях.
Шиваай

2

Символ разрыва строки для NSString - \ r

правильный способ использования [NSString StringWithFormat:@"%@\r%@",string1,string2];

\ r ----> возврат каретки


"StringWithFormat" недействителен; он должен быть "stringWithFormat" (должен начинаться с "s" в нижнем регистре)
SpokaneDude

0

\n- предпочтительный способ разорвать линию. \rтоже будет работать. \n\rили \r\nслишком много и могут вызвать проблемы позже. Какао, имеет конкретный пункт и символы разрыва строки для конкретных целей NSParagraphSeparatorCharacter, NSLineSeparatorCharacter. Вот мой источник всего вышеперечисленного.


0

В Swift 3 все намного проще

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

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

или если вы используете textView

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

Сообщение специально помечено для цели-C.
Дилан

0

В случае, если \ n или \ r не работают, и если вы работаете с uiwebview и пытаетесь загрузить html с помощью тега <br> для вставки новой строки. Не используйте просто тег <br> в NSString stringWithFormat.

Вместо этого используйте то же самое, добавив. т.е. используя stringByAppendingString

 yourNSString = [yourNSString stringByAppendingString:@"<br>"];
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.