Mi chiedo come convertire un NSArray [@"Apple", @"Pear ", 323, @"Orange"]
in una stringa in Objective-C .
Mi chiedo come convertire un NSArray [@"Apple", @"Pear ", 323, @"Orange"]
in una stringa in Objective-C .
Risposte:
NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""];
[array description]
inserisce nuove righe e parentesi esterne.
NSString * myString = [array componentsJoinedByString:@""];
un sostituto accettabile per questo?
<ClassName: InstanceAddress>
. Lo valueForKey
fa recuperare la proprietà specificata per ogni elemento. In questo caso, description
è una NSString *
proprietà di NSObject
, il cui getter può essere sostituito dalle sue sottoclassi.
Un approccio sarebbe quello di iterare sull'array, chiamando il description
messaggio su ciascun elemento:
NSMutableString * result = [[NSMutableString alloc] init];
for (NSObject * obj in array)
{
[result appendString:[obj description]];
}
NSLog(@"The concatenated string is %@", result);
Un altro approccio sarebbe quello di fare qualcosa in base alla classe di ogni articolo:
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);
Se vuoi virgole e altre informazioni estranee, puoi semplicemente fare:
NSString * result = [array description];
-description
) e concat loro dopo che l'utilizzo -componentsJoinedByString:
con @""
come parametro.
Penso che la risposta di Sanjay fosse quasi lì, ma l'ho usata in questo modo
NSArray *myArray = [[NSArray alloc] initWithObjects:@"Hello",@"World", nil];
NSString *greeting = [myArray componentsJoinedByString:@" "];
NSLog(@"%@",greeting);
Produzione :
2015-01-25 08:47:14.830 StringTest[11639:394302] Hello World
Come aveva accennato Sanjay, ho usato i componenti del metodo JoinedByString di NSArray che unisce e ti restituisce NSString
BTW NSString ha componenti del metodo inversoSeparatedByString che esegue la divisione e restituisce NSArray .
Di recente ho trovato un ottimo tutorial sulle stringhe Objective-C:
http://ios-blog.co.uk/tutorials/objective-c-strings-a-guide-for-beginners/
E ho pensato che questo potesse essere di interesse:
Se si desidera dividere la stringa in un array, utilizzare un metodo chiamato componentsSeparatedByString per ottenere questo:
NSString *yourString = @"This is a test string";
NSArray *yourWords = [myString componentsSeparatedByString:@" "];
// yourWords is now: [@"This", @"is", @"a", @"test", @"string"]
se devi dividere un set di più caratteri diversi, usa i componenti di NSStringSeparatedByCharactersInSet:
NSString *yourString = @"Foo-bar/iOS-Blog";
NSArray *yourWords = [myString componentsSeparatedByCharactersInSet:
[NSCharacterSet characterSetWithCharactersInString:@"-/"]
];
// yourWords is now: [@"Foo", @"bar", @"iOS", @"Blog"]
Si noti tuttavia che la stringa di separazione non può essere vuota. Se devi separare una stringa nei suoi singoli caratteri, basta scorrere la lunghezza della stringa e convertire ogni carattere in una nuova stringa:
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:@""];
e hai dic o più array quindi usato qui sotto
NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""];
NSArray *array = [NSArray arrayWithObjects:@"One",@"Two",@"Three", nil];
NSString *stringFromArray = [array componentsJoinedByString:@" "];
La prima riga inizializza un array con oggetti. La seconda riga unisce tutti gli elementi di tale array aggiungendo la stringa all'interno di "" e restituendo una stringa.
Soluzione obiettivo C.
NSArray * array = @[@"1", @"2", @"3"];
NSString * stringFromArray = [[array valueForKey:@"description"] componentsJoinedByString:@"-"]; // "1-2-3"
Chi è alla ricerca di una soluzione Swift
Se l'array contiene stringhe, è possibile utilizzare il metodo join della stringa:
var array = ["1", "2", "3"]
let stringFromArray = "-".join(array) // "1-2-3"
In Swift 2:
var array = ["1", "2", "3"]
let stringFromArray = array.joinWithSeparator("-") // "1-2-3"
In Swift 3 e 4
var array = ["1", "2", "3"]
let stringFromArray = array.joined(separator: "-") // "1-2-3"