NSString con \ n o salto de línea

100

¿Alguien sabe cómo usar saltos de línea en NSString? Necesito hacer algo como esto:

[NSString stringWithFormat:@"%@,\n%@", mystring1,mystring2];
Dave
fuente
11
¿De verdad intentaste esto? Porque si lo hubiera hecho, habría obtenido su respuesta.
Dave DeLong
no, no funcionó. Veo \ n adjunto a la cadena, pero cuando se procesa, está en la misma línea.
Dave
4
Asegúrese de que este mensaje de tipo NSString que está mostrando no utilice soporte HTML. Si usa soporte HTML, no tratará \ n. Espero ser útil. Gracias, Aby
Abdul Yasin

Respuestas:

177

Me encontré con el mismo problema al sobrecargar la descripción de una subclase de NSObject. En esta situación, pude usar el retorno de carro (\ r) en lugar de una nueva línea (\ n) para crear un salto de línea.

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

Anthony F
fuente
1
¡Perfecto! Solo tenga en cuenta que tiene una coma innecesaria después del primer% @
Sam Spencer
1
@OMGPOP, tenga en cuenta que para el desarrollo de iOS también debe consultar mi respuesta a continuación.
Andy A
Perfecto funcionó para mí, muchas gracias por compartir esto.
swiftBoy
32

Si su cadena va en una UIView (por ejemplo, una UILabel), también debe establecer el número de líneas en 0

myView.numberOfLines=0;
Andy A
fuente
26

Descubrí que cuando estaba leyendo cadenas de un .plistarchivo, las apariciones de "\n"se analizaban como "\\n". La solución para mí fue reemplazar las apariciones de "\\n"con "\n". Por ejemplo, dada una instancia de lectura con NSStringnombre myStringde mi .plistarchivo, tuve que llamar ...

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

... antes de asignarlo a mi UILabelinstancia ...

myLabel.text = myString;
Adil Hussain
fuente
2
Este era mi escenario exacto, Adil. ¡Gracias por tu respuesta!
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
fuente
8

prueba esto (stringWithFormat tiene que empezar con minúsculas)

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

\ n \ r parece funcionar para mí.

Estoy usando Xcode 4.6 con IOS 6.0 como objetivo. Probado en iPhone 4S. Pruébelo usted mismo.

Feng Chiu

us_david
fuente
1
esto no es una respuesta ... por favor escríbalos en los comentarios.
Shivaay
2

El carácter de salto de línea para NSString es \ r

forma correcta de usar [NSString StringWithFormat:@"%@\r%@",string1,string2];

\ r ----> retorno de carro

Chamath Jeevan
fuente
"StringWithFormat" no es válido; debería ser "stringWithFormat" (debe comenzar con minúsculas)
SpokaneDude
0

\nes la forma preferida de romper una línea. \rtambién funcionará. \n\ro \r\nson exagerados y pueden causarle problemas más adelante. Cacao, tiene el párrafo específico y caracteres de salto de línea para usos específicos NSParagraphSeparatorCharacter, NSLineSeparatorCharacter. Aquí está mi fuente de todo lo anterior.

Mahboudz
fuente
0

En Swift 3, es mucho más simple

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

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

o si está utilizando un textView

yourtextView.text =  "\(stringA)\n\(stringB)"
Naishta
fuente
La publicación está etiquetada específicamente para Objective-C.
Dylan
0

En caso de que \ n o \ r no funcione y si está trabajando con uiwebview y está intentando cargar html usando la etiqueta <br> para insertar una nueva línea. No use simplemente la etiqueta <br> en NSString stringWithFormat.

En su lugar, use el mismo agregando. es decir, utilizando stringByAppendingString

 yourNSString = [yourNSString stringByAppendingString:@"<br>"];
iPhoneDesarrollador
fuente