NSString z \ n lub podziałem wiersza

100

Czy ktoś wie, jak używać znaków końca wierszy w NSString? Muszę zrobić coś takiego -

[NSString stringWithFormat:@"%@,\n%@", mystring1,mystring2];
Dave
źródło
11
Naprawdę tego próbowałeś? Bo gdybyś to zrobił, dostałbyś odpowiedź.
Dave DeLong
nie, to nie zadziałało. widzę \ n dołączony do ciągu, ale kiedy się renderuje, znajduje się w tym samym wierszu.
Dave
4
Upewnij się, że ten komunikat typu NSString, który wyświetlasz, nie korzysta z obsługi HTML. Jeśli używasz obsługi HTML, nie będzie traktować \ n. Mam nadzieję, że jestem pomocny. Dzięki, Aby
Abdul Yasin,

Odpowiedzi:

177

Właśnie natknąłem się na ten sam problem podczas przeciążania - opis dla podklasy NSObject. W tej sytuacji mogłem użyć powrotu karetki (\ r) zamiast nowej linii (\ n), aby utworzyć podział wiersza.

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

Anthony F.
źródło
1
idealny! Zwróć uwagę, że masz niepotrzebny przecinek po pierwszym% @
Sam Spencer
1
@OMGPOP, zwróć uwagę, że w przypadku programowania na iOS musisz również sprawdzić moją odpowiedź poniżej.
Andy A
Idealnie zadziałało dla mnie, wielkie dzięki za udostępnienie tego.
swiftBoy
32

Jeśli twój ciąg jest w UIView (np. UILabel), musisz również ustawić liczbę linii na 0

myView.numberOfLines=0;
Andy A.
źródło
26

Okazało się, że podczas wczytywania ciągów znaków z .plistpliku wystąpienia "\n"były analizowane jako "\\n". Rozwiązaniem dla mnie było zastąpienie wystąpienia "\\n"z "\n". Na przykład, biorąc pod uwagę wystąpienie NSStringnazwanego myStringodczytu z mojego .plistpliku, musiałem wywołać ...

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

... przed przypisaniem go do mojej UILabelinstancji ...

myLabel.text = myString;
Adil Hussain
źródło
2
To był mój dokładny scenariusz, Adil. Dziękuję za odpowiedź!
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];
Mohit
źródło
8

spróbuj tego (stringWithFormat musi zaczynać się małymi literami)

 [NSString stringWithFormat:@"%@\n%@",string1,string2];
kochanie
źródło
2

\ n \ r wydaje się działać dla mnie.

Używam Xcode 4.6 z systemem IOS 6.0 jako miejscem docelowym. Testowane na iPhonie 4S. Wypróbuj sam.

Feng Chiu

us_david
źródło
1
to nie jest odpowiedź… napisz to w komentarzach.
Shivaay,
2

Znakiem podziału wiersza dla NSString jest \ r

prawidłowy sposób użycia [NSString StringWithFormat:@"%@\r%@",string1,string2];

\ r ----> powrót karetki

Chamath Jeevan
źródło
„StringWithFormat” jest nieprawidłowy; powinno to być „stringWithFormat” (musi zaczynać się od małych liter „s”)
SpokaneDude
0

\nto preferowany sposób na przerwanie linii. \rzadziała też. \n\rlub \r\nsą przesadne i mogą powodować problemy później. Kakao, ma konkretny paragraf i linii znaków przerwa na konkretnych zastosowań NSParagraphSeparatorCharacter, NSLineSeparatorCharacter. Oto moje źródło wszystkich powyższych.

mahboudz
źródło
0

W Swift 3 jest znacznie prostszy

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

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

lub jeśli używasz textView

yourtextView.text =  "\(stringA)\n\(stringB)"
Naishta
źródło
Post jest specjalnie oznaczony jako Objective-C.
dylan,
0

W przypadku, gdy \ n lub \ r nie działają i jeśli pracujesz z uiwebview i próbujesz załadować html za pomocą tagu <br>, aby wstawić nową linię. Nie używaj tylko tagu <br> w NSString stringWithFormat.

Zamiast tego użyj tego samego, dołączając. tj. za pomocą stringByAppendingString

 yourNSString = [yourNSString stringByAppendingString:@"<br>"];
iPhoneDeveloper
źródło