动态更改NSStringWithFormat中的变量数

时间:2013-11-26 10:25:11

标签: objective-c cocoa nsstring

假设我有这样的字符串:

NSString *myString = [NSString stringWithFormat:@"%@%@%@%@%@",variable1,variable2,variable3,variable4,variable5];

如果variable2nil,我不希望在我的字符串中,如下所示:

NSString *myString = [NSString stringWithFormat:@"%@%@%@%@",variable1,variable3,variable4,variable5];

问题

如果没有很多if语句,有没有办法做到这一点?

2 个答案:

答案 0 :(得分:4)

请勿使用[NSString stringWithFormat:],而是创建NSMutableString并根据需要附加字符串:

NSMutableString *s = [[NSMutableString alloc] init];
if (variable1)
    [s appendString:variable1];
if (variable2)
    [s appendString:variable2];
if (variable3)
    [s appendString:variable3];
if (variable4)
    [s appendString:variable4];
if (variable5)
    [s appendString:variable5];

(抱歉,我错过了你的观点"没有很多if声明"但是我不认为可以避免这种说法。

答案 1 :(得分:1)

最简单的方法是使用压缩的三元运算符将null替换为空字符串。使用示例的略微删节版本:

NSString *myString = [NSString stringWithFormat:@"%@%@",variable1 ?: @"",variable2 ?: @""];