189 votes

Convertir NSArray en NSString en Objective-C

Je me demande comment convertir un NSArray [1,@"Hello",3,4,5] en une chaîne dans Objective-C. Un exemple Applescript est:

 set the_array to {1,"Two", 3,4,5,6}
set the_array to the_array as string
 

544voto

Dave DeLong Points 156978
NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""];

32voto

Jason Points 11332

Une approche consiste à 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 d'autres informations superflues, vous pouvez simplement faire:

 NSString * result = [array description];
 

10voto

MarkP Points 536

J'ai récemment trouvé un très bon tutoriel sur Objective-C Chaînes:

http://ios-blog.co.uk/tutorials/objective-c-strings-a-guide-for-beginners/

Et j'ai pensé que cela pourrait intéresser:

Si vous voulez diviser la chaîne en un tableau d'utiliser une méthode appelée componentsSeparatedByString de réaliser 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 partager sur un ensemble de plusieurs caractères différents, l'utilisation NSString de componentsSeparatedByCharactersInset:

NSString *yourString = @"Foo-bar/iOS-Blog";
NSArray *yourWords = [myString componentsSeparatedByCharactersInSet:
                  [NSCharacterSet characterSetWithCharactersInString:@"-/"]
                ];

// yourWords is now: [@"Foo", @"bar", @"iOS", @"Blog"]

Notez cependant que le séparateur de chaîne ne peut pas être vide. Si vous avez besoin de séparer une chaîne de caractères dans chacun de ses personnages, juste une boucle sur la longueur de la chaîne et de convertir chaque caractère dans une nouvelle chaîne de caractères:

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];
}

9voto

Sanjay Kakadiya Points 26
NSString * str = [componentsJoinedByString:@""];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X