将Unicode符号或其XML/HTML实体转换为Swift中的Unicode编号

Jor*_*n H 4 html xml unicode ios swift

给定一个unicode符号作为String其XML或HTML实体,如何生成其Unicode编号?例如,如果您获得了字符串"?",并且可以生成其HTML代码(෴),那么您如何生成其Unicode编号(U+0DF4)?

我目前正在使用CFStringTransformAPI 生成HTML实体并kCFStringTransformToXMLHex用于转换.但是unicode号本身没有变换.

Leo*_*bus 6

更新:Xcode 9•Swift 4

extension String {
    var html2AttributedString: NSAttributedString? {
        do {
            return try NSAttributedString(data: Data(utf8), options: [.documentType: NSAttributedString.DocumentType.html, .characterEncoding: String.Encoding.utf8.rawValue], documentAttributes: nil)
        } catch {
            print(error)
            return nil
        }
    }
    var unicodes: [UInt32] { return unicodeScalars.map{$0.value} }
}
Run Code Online (Sandbox Code Playgroud)

Xcode 8•Swift 3

extension String {
    var html2AttributedString: NSAttributedString? {
        do {
            return try NSAttributedString(data: Data(utf8), options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: String.Encoding.utf8.rawValue], documentAttributes: nil)
        } catch {
            print(error)
            return nil
        }
    }
    var unicodes: [UInt32] { return unicodeScalars.map{$0.value} }
}
Run Code Online (Sandbox Code Playgroud)
let str = "<span>&euro;€</span>".html2AttributedString?.string ?? ""
print(str.unicodes)     // [8364, 8364]
Run Code Online (Sandbox Code Playgroud)