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];

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];


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;

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;

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];

8

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

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

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


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


„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.


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)"

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>"];
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.