2016-10-18 72 views

回答

11

您是否确实需要保留<span>标签,同时替换&ouml;这个符号?由Leo Dabus在Convert Unicode symbol or its XML/HTML entities into its Unicode number in 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" 
} 

事先斯威夫特版本,请参阅previous revision这个答案。

+0

非常感谢!它的工作原理 – Kirill

+0

'数据(在你的例子中使用:.utf8'片段抛出使用未解析的标识符'data''任何想法如何解决这个问题? – afkatja

+0

嗨罗布和谢谢你奇怪,我使用斯威夫特3,仍然有 – afkatja