解码HTML字符串

Kir*_*ill 3 html decode swift

如何解码我的html字符串:

<span>Bj&ouml;rn</span>
Run Code Online (Sandbox Code Playgroud)

<span>Björn</span>
Run Code Online (Sandbox Code Playgroud)

在Swift 3中?

Rob*_*Rob 13

你真的需要保留<span>标签,同时更换&ouml;符号吗?Leo Dabus 将转换Unicode符号或其XML/HTML实体建议的一种技术转换为Swift中的Unicode数字,转换符号包括通过属性字符串对其进行往返.

在Swift 4中:

extension String {
    /// Converts HTML string to a `NSAttributedString`

    var htmlAttributedString: NSAttributedString? {
        return try? NSAttributedString(data: Data(utf8), options: [.documentType: NSAttributedString.DocumentType.html, .characterEncoding: String.Encoding.utf8.rawValue], documentAttributes: nil)
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你想要一个属性字符串(例如,用于a UILabel)

let string = "Bj&ouml;rn is <em>great</em> name"
label.attributedText = string.htmlAttributedString
Run Code Online (Sandbox Code Playgroud)

这也转换Bj&ouml;rnBjörn和斜体<em>...</em>.

如果您只想转换HTML符号并删除HTML标记(例如您的<span>/ </span>),只需抓住string:

let string = "Bj&ouml;rn is <em>great</em> name"
if let result = string.htmlAttributedString?.string {
    print(result)   // "Björn is great name"
}
Run Code Online (Sandbox Code Playgroud)

对于之前的Swift版本,请参阅此答案的先前版本.