Question Convertir NSArray en NSString en Objective-C


Je me demande comment convertir un NSArray  [@"Apple", @"Pear ", 323, @"Orange"] à une chaîne dans Objectif c.


177
2017-12-01 20:26


origine


Réponses:


NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""];

518
2017-12-01 20:31



Une approche serait d'itérer sur le tableau, appelant le description message sur chaque article:

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

32
2017-12-01 20:28



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 composantsJoinedByString de NSArray qui se joint et vous rend NSString

BTW NSString a la méthode inverse componentsSeparatedByString qui fait la division et vous donne NSArray arrière .


12
2018-01-25 16:54



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

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

Et je pensais que cela pourrait être intéressant:

Si vous souhaitez diviser la chaîne en un tableau, utilisez une méthode appelée componentsSeparatedByString pour y parvenir:

NSString *yourString = @"This is a test string";
    NSArray *yourWords = [myString componentsSeparatedByString:@" "];

    // yourWords is now: [@"This", @"is", @"a", @"test", @"string"]

Si vous avez besoin de diviser sur un ensemble de plusieurs caractères différents, utilisez les composantsSeparatedByCharactersInSet de NSString:

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 devez séparer une chaîne en caractères individuels, faites simplement une boucle sur la longueur de la chaîne et convertissez 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
2017-10-23 13:33



NSString * str = [componentsJoinedByString:@""];

et vous avez dic ou multi array alors utilisé ci-dessous

NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""];   

8
2018-06-04 12:07



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 dans le "" et renvoie une chaîne.


1
2017-09-21 13:31



La façon dont je sais est facile.

var NSArray_variable = NSArray_Object[n]
var stringVarible = NSArray_variable as String

n est la position interne dans le tableau Ceci dans la langue SWIFT. Cela pourrait fonctionner dans Objectif c


-1
2018-02-22 22:11



Solution Swift 3.0:

let string = array.joined(separator: ",")

-1
2018-02-01 16:11