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];
Dave
la source
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];

Anthony F
la source
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;
Andy A
la source
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;
Adil Hussain
la source
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];
Mohit
la source
8

essayez ceci (stringWithFormat doit commencer par des minuscules)

 [NSString stringWithFormat:@"%@\n%@",string1,string2];
Mon chéri
la source
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

us_david
la source
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

Chamath Jeevan
la source
"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.

Mahboudz
la source
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)"
Naishta
la source
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>"];
iPhoneDéveloppeur
la source