我希望在Swift中将一个字符串作为常量存储,以便重复使用并注入变量。例如,我可以在C#中这样做:
var template = "Your name is {0} and your age is {1}."
someLabel.text = string.Format(template, "John", 35)
some2Label.text = string.Format(template, "Jane", 33)
我该如何在Swift中完成这个操作,以便我可以重复使用字符串模板?
使用Swift的printf
风格的语法保存模板,然后像这样使用:
var template = "Your name is %@ and your age is %d."
someLabel.text = String(format: template, "John", 35)
some2Label.text = String(format: template, "Jane", 33)
如果您之前没有使用过这种语法风格,这里有一个简单的指南:
%@
: 字符串(或者像 nhgrif 指出的那样,是NSObject
的description
/descriptionWithLocale
属性)%d
: 整型%f
: 双精度浮点型%.2f
: 保留两位小数的双精度浮点型,例如 2.2342 -> 2.23%@
不仅适用于 String
。 - nhgriflet aString =“John has \(count)jellybeans”;let newString = String(format:aString,count)
- Duncan C您已经有了一个答案,但如果您想要类型安全并本地化您的代码,您可以使用枚举类型,如下所示:
enum Greeting: CustomStringConvertible {
case SayHello(String)
var description:String {
switch (self) {
case .SayHello(let name):
return "Say hello to \(name)?"
}
}
}
let a = Greeting.SayHello("my little friend")
String(format:...)
方法在类型安全的枚举中构建它们。 您只需要仔细实现它(但只需实现一次)。
stringWithFormat:
方法 - 在Swift中它与在Objective-C中一样有效。 - matt