Swift 4:
Общее решение, которое, наконец, работало для меня с html-кодом и символами новой строки и одиночными кавычками
extension String {
var htmlDecoded: String {
let decoded = try? NSAttributedString(data: Data(utf8), options: [
.documentType: NSAttributedString.DocumentType.html,
.characterEncoding: String.Encoding.utf8.rawValue
], documentAttributes: nil).string
return decoded ?? self
}
}
Использование:
let yourStringEncoded = yourStringWithHtmlcode.htmlDecoded
Затем мне пришлось применить еще несколько фильтров, чтобы избавиться от single quotes
(например: don't, hasn't, It's
и т. д.), а также новые строковые символы, такие как \n
var yourNewString = String(yourStringEncoded.filter { !"\n\t\r".contains($0) })
yourNewString = yourNewString.replacingOccurrences(of: "\'", with: "", options: NSString.CompareOptions.literal, range: nil)