在Swift中添加引号

时间:2015-06-30 11:22:57

标签: ios swift localization

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 

对于法国用户:«成为或不成为......»

对于德国用户:“成为或不成为......”

3 个答案:

答案 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)

Swift 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)

输出将是:"成为或不成为......"