NSString mit \ n oder Zeilenumbruch


100

Weiß jemand, wie man Zeilenumbrüche in NSString verwendet? Ich muss so etwas tun -

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

11
Hast du das tatsächlich versucht? Denn wenn Sie es getan hätten, hätten Sie Ihre Antwort bekommen.
Dave DeLong

Nein, es hat nicht funktioniert. Ich sehe das \ n an die Zeichenfolge angehängt, aber wenn es gerendert wird, ist es in der gleichen Zeile.
Dave

4
Stellen Sie sicher, dass diese Nachricht vom Typ NSString, die Sie anzeigen, keine HTML-Unterstützung verwendet. Wenn Sie HTML-Unterstützung verwenden, wird \ n nicht behandelt. Hoffe ich bin hilfreich. Vielen Dank, Aby
Abdul Yasin

Antworten:


177

Ich bin gerade auf dasselbe Problem gestoßen, als ich die Beschreibung für eine Unterklasse von NSObject überladen habe. In dieser Situation konnte ich Wagenrücklauf (\ r) anstelle von Zeilenumbruch (\ n) verwenden, um einen Zeilenumbruch zu erstellen.

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


1
perfekt! Beachten Sie nur, dass Sie nach dem ersten% @
Sam Spencer

1
@OMGPOP, beachte, dass du für die iOS-Entwicklung auch meine Antwort unten lesen musst.
Andy A

Perfekt hat für mich funktioniert, vielen Dank für das Teilen.
SwiftBoy

32

Wenn sich Ihre Zeichenfolge in einer UIView befindet (z. B. einem UILabel), müssen Sie auch die Anzahl der Zeilen auf 0 setzen

myView.numberOfLines=0;

26

Ich stellte fest, dass beim Einlesen von Zeichenfolgen aus einer .plistDatei Vorkommen von "\n"als analysiert wurden "\\n". Die Lösung für mich war, Vorkommen von "\\n"durch zu ersetzen "\n". Zum Beispiel musste ich bei einer Instanz von NSStringNamed myStringRead-In aus meiner .plistDatei ...

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

... bevor ich es meiner UILabelInstanz zuordne ...

myLabel.text = myString;

2
Dies war mein genaues Szenario, Adil. Danke für deine Antwort!
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

Versuchen Sie dies (stringWithFormat muss mit Kleinbuchstaben beginnen)

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

2

\ n \ r scheint für mich zu arbeiten.

Ich verwende Xcode 4.6 mit IOS 6.0 als Ziel. Getestet auf dem iPhone 4S. Probieren Sie es selbst aus.

Feng Chiu


1
Dies ist keine Antwort. Bitte schreiben Sie diese in Kommentare.
Shivaay

2

Das Zeilenumbruchzeichen für NSString ist \ r

richtige Verwendung [NSString StringWithFormat:@"%@\r%@",string1,string2];

\ r ----> Wagenrücklauf


"StringWithFormat" ist ungültig; es sollte "stringWithFormat" sein (muss mit Kleinbuchstaben beginnen)
SpokaneDude

0

\nist der bevorzugte Weg, um eine Linie zu brechen. \rwird auch funktionieren. \n\roder \r\nsind übertrieben und können später zu Problemen führen. Kakao, hat spezifische Absatz- und Zeilenumbrüche für spezielle Anwendungen NSParagraphSeparatorCharacter, NSLineSeparatorCharacter. Hier ist meine Quelle für all das oben Genannte.


0

In Swift 3 ist es viel einfacher

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

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

oder wenn Sie eine Textansicht verwenden

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

Der Beitrag ist speziell für Objective-C gekennzeichnet.
Dylan

0

Falls \ n oder \ r nicht funktioniert und wenn Sie mit uiwebview arbeiten und versuchen, HTML mit dem Tag <br> zu laden, um eine neue Zeile einzufügen. Verwenden Sie nicht nur das <br> -Tag in NSString stringWithFormat.

Verwenden Sie stattdessen dasselbe durch Anhängen. dh mit stringByAppendingString

 yourNSString = [yourNSString stringByAppendingString:@"<br>"];
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.