web-dev-qa-db-fra.com

Convertir NSArray en NSString en Objective-C

Je me demande comment convertir un NSArray[@"Apple", @"Pear ", 323, @"Orange"] en une chaîne in Objective-C.

182
alexyorke
NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""];
531
Dave DeLong

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];
32
Jason

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.

15
Pranay

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];
}
10
MarkP
NSString * str = [componentsJoinedByString:@""];

et vous avez dic ou plusieurs tableau alors utilisé ci-dessous

NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""];   
8
Sanjay Kakadiya
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.

1

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"
0