Je me demande comment convertir un NSArray[@"Apple", @"Pear ", 323, @"Orange"]
en une chaîne in Objective-C.
NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""];
Une approche consisterait à parcourir le tableau en appelant le message description
sur chaque élément:
NSMutableString * result = [[NSMutableString alloc] init];
for (NSObject * obj in array)
{
[result appendString:[obj description]];
}
NSLog(@"The concatenated string is %@", result);
Une autre approche serait de faire quelque chose en fonction de la classe de chaque élément:
NSMutableString * result = [[NSMutableString alloc] init];
for (NSObject * obj in array)
{
if ([obj isKindOfClass:[NSNumber class]])
{
// append something
}
else
{
[result appendString:[obj description]];
}
}
NSLog(@"The concatenated string is %@", result);
Si vous voulez des virgules et autres informations superflues, vous pouvez simplement faire:
NSString * result = [array description];
Je pense que la réponse de Sanjay était presque là mais je l'ai utilisée de cette façon
NSArray *myArray = [[NSArray alloc] initWithObjects:@"Hello",@"World", nil];
NSString *greeting = [myArray componentsJoinedByString:@" "];
NSLog(@"%@",greeting);
Sortie:
2015-01-25 08:47:14.830 StringTest[11639:394302] Hello World
Comme Sanjay l'avait laissé entendre - j'ai utilisé la méthode componentsJoinedByString de NSArray qui joint et vous rend NSString
BTW NSString a la méthode inverse componentsSeparatedByString qui effectue la division et vous renvoie NSArray.
J'ai récemment trouvé un très bon tutoriel sur Objective-C Strings:
http://ios-blog.co.uk/tutorials/objective-c-strings-a-guide-for-beginners/
Et j'ai pensé que cela pourrait être intéressant:
Si vous souhaitez scinder la chaîne en un tableau, utilisez une méthode appelée componentsSeparatedByString pour obtenir ceci:
NSString *yourString = @"This is a test string";
NSArray *yourWords = [myString componentsSeparatedByString:@" "];
// yourWords is now: [@"This", @"is", @"a", @"test", @"string"]
si vous avez besoin de séparer plusieurs types de caractères, utilisez les composants de NSStringSeparatedByCharactersInSet:
NSString *yourString = @"Foo-bar/iOS-Blog";
NSArray *yourWords = [myString componentsSeparatedByCharactersInSet:
[NSCharacterSet characterSetWithCharactersInString:@"-/"]
];
// yourWords is now: [@"Foo", @"bar", @"iOS", @"Blog"]
Notez cependant que la chaîne de séparation ne peut pas être vide. Si vous avez besoin de séparer une chaîne en ses caractères individuels, il vous suffit de parcourir la longueur de la chaîne et de convertir chaque caractère en une nouvelle chaîne:
NSMutableArray *characters = [[NSMutableArray alloc] initWithCapacity:[myString length]];
for (int i=0; i < [myString length]; i++) {
NSString *ichar = [NSString stringWithFormat:@"%c", [myString characterAtIndex:i]];
[characters addObject:ichar];
}
NSString * str = [componentsJoinedByString:@""];
et vous avez dic ou plusieurs tableau alors utilisé ci-dessous
NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""];
NSArray *array = [NSArray arrayWithObjects:@"One",@"Two",@"Three", nil];
NSString *stringFromArray = [array componentsJoinedByString:@" "];
La première ligne initialise un tableau avec des objets. La deuxième ligne joint tous les éléments de ce tableau en ajoutant la chaîne entre "" et renvoie une chaîne.
Solution Objective C
NSArray * array = @[@"1", @"2", @"3"];
NSString * stringFromArray = [[array valueForKey:@"description"] componentsJoinedByString:@"-"]; // "1-2-3"
Ceux qui recherchent une solution dans Swift
Si le tableau contient des chaînes, vous pouvez utiliser la méthode de jointure de String:
var array = ["1", "2", "3"]
let stringFromArray = "-".join(array) // "1-2-3"
Dans Swift 2:
var array = ["1", "2", "3"]
let stringFromArray = array.joinWithSeparator("-") // "1-2-3"
Dans Swift 3 & 4
var array = ["1", "2", "3"]
let stringFromArray = array.joined(separator: "-") // "1-2-3"