我试图连接几个NSStrings但是想要排除那些为空的。我正在使用这个解决方案:
[NSString stringWithFormat:@"%@/%@/%@", three, two, one];
但如果其中一个字符串为null怎么办?我想排除它。有任何想法吗?
感谢。
答案 0 :(得分:7)
你可以这样做:
[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];
}
答案 1 :(得分:3)
你可以有一个像
这样的方法- (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]
。
答案 2 :(得分:1)
你可以做一个循环并检查每个对象。
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];
}