Objective-C で文字列配列の join をやるのは面倒と思っていた。Ruby の join みたいなことが出来ると楽なのにー、と。例えばこんなコード:
%w(This is an apple).join(' ') #=> "This is an apple"
で、Apple のマニュアルを見たらあった。componentsJoinedByString
というメソッド。
これを使えば、NSMutableString を使ったり
NSArray<NSString *> *strings = @[@"This", @"is", @"a", @"pen."];
NSString *separator = @" ";
NSMutableString *mResult1 = [NSMutableString new];
for (int i=0; i<strings.count; ++i) {
[mResult1 appendString:strings[i]];
if (i < strings.count - 1) {
[mResult1 appendString:separator];
}
}
NSString *result1 = [mResult1 copy];
NSLog(@"Text: %@", result1);
Text: This is a pen.
stringByAppendingString:
を使ったり
NSArray<NSString *> *strings = @[@"This", @"is", @"a", @"pen."];
NSString *separator = @" ";
NSString *result2 = @"";
for (int i=0; i<strings.count; ++i) {
result2 = [result2 stringByAppendingString:strings[i]];
if (i < strings.count - 1) {
result2 = [result2 stringByAppendingString:separator];
}
}
NSLog(@"Text: %@", result2);
Text: This is a pen.
する必要がなくなって、シンプルに書ける。
NSArray<NSString *> *strings = @[@"This", @"is", @"a", @"pen."];
NSString *separator = @" ";
NSString *result = [strings componentsJoinedByString:separator];
NSLog(@"Text: %@", result);
Text: This is a pen.
便利。Objective-C には、意外とユーティリティ的なメソッドも用意されていると知る今日この頃。
No comments:
Post a Comment