我创建了一个本地化文件,它需要一个字符串参数
static var forget_title: String {
return NSLocalizedString("forget_title", value: "Forget "%@"?", comment: "forget title")
}
可本地化的英文文件具有-
"forget_title" = "Forget "%@"?";
尝试使用时-
let name = "XYZ"
let bannerHeader = String(format: .forget_title, name)
print(bannerHeader)
result-忘记";XYZ
预期-忘记";XYX";?
所以它缺少一些字符串数据
附加数据-
let string = "hello "%@"?"
let someString = String(format: string, "test")
let newString = "hello %@?"
let someOtherString = String(format: newString, ""test"")
let bannerHeader = String(format: .forget_title, networkName)
print("Header - (String.forget_title)")
print("Header - (someString)")
print("Header - (someOtherString)")
print("Header - (bannerHeader)")
但如果我先打印bannerHeader如下所示-
print("Header - (bannerHeader)")
print("Header - (String.forget_title)")
print("Header - (someString)")
print("Header - (someOtherString)")
以下打印语句结果都不会显示在Xcode控制台中。使用xcode-13.4,swift-swift 5
根据@Sweeper的建议,name属性中存在隐藏字符-"XYZ\0\0\0\0\0";
如此使用-
let name = name.filter { $0.isLetter }
let bannerHeader = String(format: .forget_title, name)
print("Header - (bannerHeader)"
现在得到预期结果-忘记"XYX";?