NSString з \ n або розривом рядка


100

Хтось знає, як використовувати розриви рядків у NSString? Мені потрібно зробити щось подібне -

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

11
Ви насправді спробували це? Бо якби це було, ти отримав би свою відповідь.
Дейв ДеЛонг

ні, це не спрацювало. я бачу \ n додане до рядка, але коли він відображається, він знаходиться в тому ж рядку.
Дейв

4
Переконайтеся, що це повідомлення типу NSString, яке ви відображаєте, не використовує підтримку HTML. Якщо ви користуєтеся підтримкою HTML, вона не буде обробляти \ n. Сподіваюся, я корисний. Дякую, Абі
Абдул Ясін

Відповіді:


177

Я просто зіткнувся з тією ж проблемою, коли перевантажував -опис для підкласу NSObject. У цій ситуації мені вдалося використовувати повернення каретки (\ r) замість newline (\ 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
це не відповідь. Прохання написати це у коментарях.
Shivaay

2

Символ розривів рядків для NSString - \ r

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

повернення вагона


"StringWithFormat" недійсний; це має бути "stringWithFormat" (потрібно починати з нижнього регістру ')
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)"

Пост спеціально позначений для Objective-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.