Swift中有一种直接的方法可以将引号添加到字符串中吗?引号应根据用户的语言设置正确本地化(请参阅https://en.wikipedia.org/wiki/Quotation_mark)。我想在添加引号后在UILabel中显示字符串。
例如:
var quote: String!
quote = "To be or not to be..."
// one or more lines of code that add localized quotation marks
对于法国用户:«成为或不成为......»
对于德国用户:“成为或不成为......”
答案 0 :(得分:31)
使用http://nshipster.com/nslocale/中的信息:
let locale = NSLocale.currentLocale()
let qBegin = locale.objectForKey(NSLocaleQuotationBeginDelimiterKey) as? String ?? "\""
let qEnd = locale.objectForKey(NSLocaleQuotationEndDelimiterKey) as? String ?? "\""
let quote = qBegin + "To be or not to be..." + qEnd
print(quote)
示例结果:
Locale Output de „To be or not to be...“ en “To be or not to be...” fr «To be or not to be...» ja 「To be or not to be...」
我不知道开始/结束分隔符键是否可以未定义
语言环境。在这种情况下,上述代码将恢复正常
双引号"
。
答案 1 :(得分:4)
使用相同的逻辑,但使用现代简单的语法。
extension String {
static var quotes: (String, String) {
guard
let bQuote = Locale.current.quotationBeginDelimiter,
let eQuote = Locale.current.quotationEndDelimiter
else { return ("\"", "\"") }
return (bQuote, eQuote)
}
var quoted: String {
let (bQuote, eQuote) = String.quotes
return bQuote + self + eQuote
}
}
然后你可以像这样使用它:
print("To be or not to be...".quoted)
结果
Locale Output de „To be or not to be...“ en “To be or not to be...” fr «To be or not to be...» ja 「To be or not to be...」
另外,我建议你阅读整个Apple的Internationalization and Localization Guide
答案 2 :(得分:-1)
let quote = "\"To be or not to be...\""
println(quote)
输出将是:"成为或不成为......"