web-dev-qa-db-fra.com

Concaténer une chaîne dans une chaîne Objective-c

Je veux placer une chaîne dans une chaîne. Fondamentalement en pseudo-code:

"first part of string" + "(varying string)" + "third part of string"

Comment puis-je faire cela dans objectif-c? Existe-t-il un moyen de concaténer facilement dans obj-c? Merci!

36
jsttn

Oui faire 

NSString *str = [NSString stringWithFormat: @"first part %@ second part", varyingString];

Pour la concaténation, vous pouvez utiliser stringByAppendingString

NSString *str = @"hello ";
str = [str stringByAppendingString:@"world"]; //str is now "hello world"

Pour plusieurs chaînes

NSString *varyingString1 = @"hello";
NSString *varyingString2 = @"world";
NSString *str = [NSString stringWithFormat: @"%@ %@", varyingString1, varyingString2];
//str is now "hello world"
95
Dustin

Variations sur un thème:

NSString *varying = @"whatever it is";
NSString *final = [NSString stringWithFormat:@"first part %@ third part", varying];

NSString *varying = @"whatever it is";
NSString *final = [[@"first part" stringByAppendingString:varying] stringByAppendingString:@"second part"];

NSMutableString *final = [NSMutableString stringWithString:@"first part"];
[final appendFormat:@"%@ third part", varying];

NSMutableString *final = [NSMutableString stringWithString:@"first part"];
[final appendString:varying];
[final appendString:@"third part"];
11
user529758
NSString * varyingString = ...;
NSString * cat = [NSString stringWithFormat:@"%s%@%@",
  "first part of string",
  varyingString,
  @"third part of string"];

ou simplement -[NSString stringByAppendingString:]

9
justin

Vous devriez normalement utiliser -stringWithFormat ici.

NSString *myString = [NSString stringWithFormat:@"%@%@%@", @"some text", stringVariable, @"some more text"];
6
Bill Burgess

Il suffit de faire

NSString* newString=[NSString stringWithFormat:@"first part of string (%@) third part of string", @"foo"];

Cela vous donne 

@"first part of string (foo) third part of string"
3
Yuji

Je suis étonné qu'aucune des réponses les plus fréquentes n'indique que dans les versions récentes d'Objective-C (après l'ajout de littéraux), vous pouvez concaténer comme ceci:

@"first" @"second"

Et cela aura pour résultat:

@"firstsecond"

Vous ne pouvez pas l'utiliser avec des objets NSString, mais uniquement avec des littéraux, mais cela peut être utile dans certains cas.

1
Rodrigo

un simple:

[[@"first" stringByAppendingString:@"second"] stringByAppendingString:@"third"];

si vous avez plusieurs chaînes à concaténer, vous devez utiliser NSMutableString pour de meilleures performances. 

0
fengd