【问题标题】:Convert String with Umlaut in Swift在 Swift 中使用变音符号转换字符串
【发布时间】:2015-01-18 22:32:26
【问题描述】:

我有一个文本字段输入,它返回如下字符串:

let name = "B\U00f6se"

如何转换变音符号,以便 \U00f6(和任何其他特殊字符)被替换为适当的等价物:

name = "Böse";

感谢您的帮助!

//Seb

【问题讨论】:

  • 所以用户在文本字段中输入字符“B”、“\”、“U”、“0”……?那么这可能会有所帮助:stackoverflow.com/questions/17759574/…(并且将 Objective-C 形式转换为 Swift 应该不会太难:)
  • 为什么你的输入会返回那个?在 iOS 中可以直接输入 ö。
  • @matt 也许这就是问题所在。我正在使用基于此库的表单:SwiftForms。它返回字典中的所有输入。每当有特殊字符时,它都会返回类似上面的内容。有什么想法吗?
  • @Seb:NSDictionaryNSArraydescription 方法使用\Unnnn 语法来打印任何非ASCII 字符。但是,一旦您将字典值分配给字符串,您应该会看到您所期望的。 – 示例见stackoverflow.com/a/17340103/1187415
  • @MartinR 我明白了。好的,字典会像这样打印到日志中:{ gender = M; name = "\U00d6ser" } 如何正确地将名称分配给字符串?

标签: ios swift


【解决方案1】:

NSArrayNSDictionarydescription方法使用\Unnnn 所有非 ASCII 字符的转义序列。

在SwiftForms自带的Xcode示例项目中,submit方法 向用户显示此描述:

func submit(_: UIBarButtonItem!) {

    let message = self.form.formValues().description
    let alert: UIAlertView = UIAlertView(title: "Form output", message: message, delegate: nil, cancelButtonTitle: "OK")
    alert.show()
}

效果就是你看到的例子

lastName = "B\U00f6se";

description 方法仅适用于调试或日志记录。 您应该做的是枚举所有键和值:

for (key, value) in self.form.formValues() {
    println("\(key) = \(value)")
}

这会告诉你

lastName = Böse

或检索您感兴趣的表单值:

if let lastName = self.form.formValues()["lastName"] as? String {
    println(lastName) // Böse
}

【讨论】:

  • 感谢您的 cmets,我刚刚发现了一些非常相似的东西!感谢您的帮助!
【解决方案2】:

有一个更简单的方法。

let name = "B\u{00f6}se"
pinrtln(name)

更多详情请看this entry

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-20
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    相关资源
    最近更新 更多