NSString avec \ n ou saut de ligne


100

Quelqu'un sait-il comment utiliser les sauts de ligne dans NSString? J'ai besoin de faire quelque chose comme ça -

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

11
Avez-vous réellement essayé cela? Parce que si vous l'aviez fait, vous auriez obtenu votre réponse.
Dave DeLong

non ça n'a pas fonctionné. je vois le \ n ajouté à la chaîne mais quand il est rendu, il est sur la même ligne.
Dave

4
Veuillez vous assurer que ce message de type NSString que vous affichez n'utilise pas le support HTML. Si vous utilisez le support HTML, il ne traitera pas \ n. J'espère que je suis utile. Merci, Aby
Abdul Yasin

Réponses:


177

Je viens de rencontrer le même problème lors de la surcharge de -description pour une sous-classe de NSObject. Dans cette situation, j'ai pu utiliser le retour chariot (\ r) au lieu du retour à la ligne (\ n) pour créer un saut de ligne.

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


1
parfait! Notez simplement que vous avez une virgule inutile après le premier% @
Sam Spencer

1
@OMGPOP, notez que pour le développement iOS, vous devez également consulter ma réponse ci-dessous.
Andy A

Parfait a fonctionné pour moi, un immense merci pour ce partage.
swiftBoy

32

Si votre chaîne va dans un UIView (par exemple un UILabel), vous devez également définir le nombre de lignes sur 0

myView.numberOfLines=0;

26

J'ai constaté que lorsque je lisais des chaînes à partir d'un .plistfichier, les occurrences de "\n"étaient analysées comme "\\n". La solution pour moi était de remplacer les occurrences de "\\n"par "\n". Par exemple, étant donné une instance de lecture NSStringnommée myStringdepuis mon .plistfichier, j'ai dû appeler ...

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

... avant de l'attribuer à mon UILabelinstance ...

myLabel.text = myString;

2
C'était mon scénario exact, Adil. Merci pour votre réponse!
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

essayez ceci (stringWithFormat doit commencer par des minuscules)

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

2

\ n \ r semble fonctionner pour moi.

J'utilise Xcode 4.6 avec IOS 6.0 comme cible. Testé sur iPhone 4S. Essayez-le par vous-même.

Feng Chiu


1
ce n'est pas une réponse ... veuillez les écrire dans les commentaires.
Shivaay

2

Le caractère de saut de ligne pour NSString est \ r

bonne façon d'utiliser [NSString StringWithFormat:@"%@\r%@",string1,string2];

\ r ----> retour chariot


"StringWithFormat" n'est pas valide; il doit être "stringWithFormat" (doit commencer par des minuscules)
SpokaneDude

0

\nest la meilleure façon de briser une ligne. \rfonctionnera aussi. \n\rou \r\nsont exagérés et peuvent vous causer des problèmes plus tard. Le cacao, a paragraphe spécifique et des sauts de ligne pour des utilisations spécifiques de NSParagraphSeparatorCharacter, NSLineSeparatorCharacter. Voici ma source pour tout ce qui précède.


0

Dans Swift 3, c'est beaucoup plus simple

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

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

ou si vous utilisez un textView

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

Post est spécifiquement étiqueté pour Objective-C.
dylan

0

Dans le cas où \ n ou \ r ne fonctionne pas et si vous travaillez avec uiwebview et essayez de charger html en utilisant la balise <br> pour insérer une nouvelle ligne. N'utilisez pas simplement la balise <br> dans NSString stringWithFormat.

Utilisez plutôt le même en ajoutant. ie en utilisant stringByAppendingString

 yourNSString = [yourNSString stringByAppendingString:@"<br>"];
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.