在 Swift 中使用变音符号转换字符串
Posted
技术标签:
【中文标题】在 Swift 中使用变音符号转换字符串【英文标题】:Convert String with Umlaut in Swift 【发布时间】:2015-01-18 22:32:26 【问题描述】:我有一个文本字段输入,它返回如下字符串:
let name = "B\U00f6se"
如何转换变音符号,以便 \U00f6(和任何其他特殊字符)被替换为适当的等价物:
name = "Böse";
感谢您的帮助!
//Seb
【问题讨论】:
所以用户在文本字段中输入字符“B”、“\”、“U”、“0”……?那么这可能会有所帮助:***.com/questions/17759574/…(并且将 Objective-C 形式转换为 Swift 应该不会太难:) 为什么你的输入会返回那个?在 ios 中可以直接输入 ö。 @matt 也许这就是问题所在。我正在使用基于此库的表单:SwiftForms。它返回字典中的所有输入。每当有特殊字符时,它都会返回类似上面的内容。有什么想法吗? @Seb:NSDictionary
和NSArray
的description
方法使用\Unnnn
语法来打印任何非ASCII 字符。但是,一旦您将字典值分配给字符串,您应该会看到您所期望的。 – 示例见***.com/a/17340103/1187415
@MartinR 我明白了。好的,字典会像这样打印到日志中: gender = M; name = "\U00d6ser"
如何正确地将名称分配给字符串?
【参考方案1】:
NSArray
和NSDictionary
的description
方法使用\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\u00f6se"
pinrtln(name)
更多详情请看this entry
【讨论】:
以上是关于在 Swift 中使用变音符号转换字符串的主要内容,如果未能解决你的问题,请参考以下文章