NSString con \ ne interruzione di riga


100

Qualcuno sa come utilizzare le interruzioni di riga in NSString? Devo fare qualcosa di simile -

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

11
Hai davvero provato questo? Perché se lo avessi fatto, avresti ottenuto la tua risposta.
Dave DeLong

no non ha funzionato. vedo \ n aggiunto alla stringa ma quando viene renderizzato, è sulla stessa riga.
Dave

4
Assicurati che questo messaggio di tipo NSString che stai visualizzando non utilizzi il supporto HTML. Se si utilizza il supporto HTML, non tratterà \ n. Spero di esserti stato d'aiuto. Grazie, Aby
Abdul Yasin

Risposte:


177

Ho appena riscontrato lo stesso problema durante il sovraccarico di -description per una sottoclasse di NSObject. In questa situazione sono stato in grado di utilizzare il ritorno a capo (\ r) invece di una nuova riga (\ n) per creare un'interruzione di riga.

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


1
Perfetto! Tieni presente che hai una virgola non necessaria dopo il primo% @
Sam Spencer

1
@OMGPOP, nota che per lo sviluppo iOS devi anche controllare la mia risposta di seguito.
Andy A

Perfetto ha funzionato per me, grazie mille per aver condiviso questo.
swiftBoy

32

Se la tua stringa sta andando in una UIView (ad esempio una UILabel), devi anche impostare il numero di righe su 0

myView.numberOfLines=0;

26

Ho scoperto che quando leggevo le stringhe da un .plistfile, le occorrenze di "\n"venivano analizzate come "\\n". La soluzione per me era sostituire le occorrenze di "\\n"con "\n". Ad esempio, data un'istanza di NSStringnome myStringletto dal mio .plistfile, ho dovuto chiamare ...

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

... prima di assegnarlo alla mia UILabelistanza ...

myLabel.text = myString;

2
Questo era il mio scenario esatto, Adil. Grazie per la tua risposta!
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

prova questo (stringWithFormat deve iniziare con lettere minuscole)

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

2

\ n \ r sembra funzionare per me.

Sto usando Xcode 4.6 con IOS 6.0 come target. Testato su iPhone 4S. Provalo da solo.

Feng Chiu


1
questa non è una risposta .. si prega di scriverli nei commenti.
Shivaay

2

Il carattere delle interruzioni di riga per NSString è \ r

modo corretto di usare [NSString StringWithFormat:@"%@\r%@",string1,string2];

\ r ----> ritorno a capo


"StringWithFormat" non è valido; dovrebbe essere "stringWithFormat" (deve iniziare con una 's'
minuscola

0

\nè il modo preferito per rompere una linea. \rfunzionerà anche. \n\ro \r\nsono eccessivi e potrebbero causare problemi in seguito. Cacao, ha specifico paragrafo e caratteri di interruzione di linea per usi specifici NSParagraphSeparatorCharacter, NSLineSeparatorCharacter. Ecco la mia fonte per tutto quanto sopra.


0

In Swift 3, è molto più semplice

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

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

o se stai usando un textView

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

Il post è specificamente etichettato per Objective-C.
dylan

0

Nel caso in cui \ n o \ r non funzionino e se stai lavorando con uiwebview e stai provando a caricare html usando il tag <br> per inserire una nuova riga. Non usare solo il tag <br> in NSString stringWithFormat.

Usa invece lo stesso aggiungendo. cioè utilizzando stringByAppendingString

 yourNSString = [yourNSString stringByAppendingString:@"<br>"];
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.