【问题标题】:Dynamically change number of variables in NSStringWithFormat动态更改 NSStringWithFormat 中的变量数
【发布时间】:2013-11-26 10:25:11
【问题描述】:

假设我有这样的字符串:

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

如果 variable2nil 我不想在我的字符串中使用它,像这样:

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

问题

有没有办法在没有大量 if 语句的情况下做到这一点?

【问题讨论】:

  • 你可以有一个由这些变量组成的数组,并在检查是否为 nil 的同时迭代它们,然后将它们附加到可变字符串中。
  • @AdilSoomro 谢谢!这将是您的解决方案的一半和特洛伊木马的一半:)
  • 欢迎您,如果您认为另一半建议使用可变字符串,那我已经建议过了。 ;)
  • Err,你不能用nil 元素创建一个数组,所以这是“不行”。
  • @trojanfoe 哦,那部分我错过了。谢谢。 :)

标签: objective-c cocoa nsstring


【解决方案1】:

不要使用[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 声明”的观点,但我认为这是无法避免的)。

【讨论】:

  • 不错的一个。那太容易了:)。非常感谢!
  • 关于 if 的。这种方式比使用 NSStringWithFormat 的 if 更容易,所以非常好。
  • 我需要更多地研究 NSMutableString - 这太棒了。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多