一尘不染

在Swift中将Unicode符号或其XML / HTML实体转换为其Unicode数字

swift

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

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


阅读 297

收藏
2020-07-07

共1个答案

一尘不染

更新: 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} }
}

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} }
}

let str = "<span>&euro;€</span>".html2AttributedString?.string ?? ""
print(str.unicodes)     // [8364, 8364]
2020-07-07