Dato un NSArray di NSStrings, esiste un modo rapido per unirli in un singolo NSString (con un separatore)?
Dato un NSArray di NSStrings, esiste un modo rapido per unirli in un singolo NSString (con un separatore)?
Risposte:
NSArray * stuff = /* ... */;
NSString * combinedStuff = [stuff componentsJoinedByString:@"separator"];
Questo è l'inverso di -[NSString componentsSeparatedByString:]
.
-componentsJoinedByString:
su NSArray dovrebbe fare il trucco.
C'è anche questa variante, se l'array originale contiene oggetti valore-chiave da cui si desidera selezionare solo una proprietà (che può essere serializzata come stringa):
@implementation NSArray (itertools)
-(NSMutableString *)stringByJoiningOnProperty:(NSString *)property separator:(NSString *)separator
{
NSMutableString *res = [@"" mutableCopy];
BOOL firstTime = YES;
for (NSObject *obj in self)
{
if (!firstTime) {
[res appendString:separator];
}
else{
firstTime = NO;
}
id val = [obj valueForKey:property];
if ([val isKindOfClass:[NSString class]])
{
[res appendString:val];
}
else
{
[res appendString:[val stringValue]];
}
}
return res;
}
@end