いくつかのNSStringを連結しようとしていますが、nullであるものを除外したいと思います。私はこのソリューションを使用しています:
[NSString stringWithFormat:@"%@/%@/%@", three, two, one];
しかし、文字列の1つがnullの場合はどうなりますか?除外したいのですが。何か案は?
ありがとう。
いくつかのNSStringを連結しようとしていますが、nullであるものを除外したいと思います。私はこのソリューションを使用しています:
[NSString stringWithFormat:@"%@/%@/%@", three, two, one];
しかし、文字列の1つがnullの場合はどうなりますか?除外したいのですが。何か案は?
ありがとう。
あなたができること:
[NSString stringWithFormat:@"%@/%@/%@", three ?: @"", two ?: @"", one ?: @""];
または、変更可能な文字列を作成して構築することをお勧めします。
NSMutableString *string = [[NSMutableString alloc] initWithCapacity:0];
if (three) {
[string appendFormat:@"%@/", three];
}
if (two) {
[string appendFormat:@"%@/", two];
}
if (one) {
[string appendFormat:@"%@/", one];
}
あなたはただのような方法を持つことができます
- (NSString *)stringOrEmptyString:(NSString *)string
{
if (string)
return string;
else
return @"";
}
そしてそれから
[NSString stringWithFormat:@"%@/%@/%@",
[self stringOrEmptyString:three],
[self stringOrEmptyString:two],
[self stringOrEmptyString:one]];
アップデート:
または、空白の値がある場合にスラッシュを使用したくない場合は、次のようにすることもできます。
NSMutableArray *array = [[NSMutableArray alloc] init];
if (one)
[array addObject:one];
if (two)
[array addObject:two];
if (three)
[array addObject:three];
次に、次のようなNSStringの結果を取得できます。
[array componentsJoinedByString:@"/"]
そしてもちろん、ARC以外の世界にいる場合は、ファイナルが必要です[array release]
。
ループを実行して、各オブジェクトをチェックできます。
NSString *myString = [[NSString alloc] init];
NSArray *myObjects = [[NSArray alloc] initWithObjects:three,two,one,nil];
for(NSString *currentObject in myObjects) {
if(![currentObject isEqualToString:@""]) myString = [NSString stringWithFormat:@"%@/%@",myString,currentObject];
}