一尘不染

解码HTML字符串

swift

如何从以下位置解码我的html字符串:

<span>Bj&ouml;rn</span>

<span>Björn</span>

在Swift 3中?


阅读 333

收藏
2020-07-07

共1个答案

一尘不染

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

如果要使用属性字符串(例如,用于中UILabel

let string = "Bj&ouml;rn is <em>great</em> name"
label.attributedText = string.htmlAttributedString

这也将转换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"
}

2020-07-07