首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在SWIFT中如何将HTML转换为纯文本?

在SWIFT中如何将HTML转换为纯文本?
EN

Stack Overflow用户
提问于 2018-08-03 04:28:37
回答 2查看 0关注 0票数 0

我正在开发一个简单的RSS阅读器应用程序,作为Xcode中的一个初学者项目。目前,我已经设置它来解析提要,并将标题、发布日期、描述和内容放在WebView中显示。

我最近决定在TableView中显示用于选择POST的描述(或内容的截断版本)。然而,在这样做时:

代码语言:txt
复制
cell.textLabel?.text = item.title?.uppercaseString
cell.detailTextLabel?.text = item.itemDescription //.itemDescription is a String

它显示了文章的原始HTML。

我想知道如何将HTML转换成纯文本,只用于TableView的详细UILabel。

EN

回答 2

Stack Overflow用户

发布于 2018-08-03 13:27:34

可以添加此扩展以将html代码转换为常规字符串:

Xcode 9·SWIFT 4

代码语言:txt
复制
extension Data {
    var html2AttributedString: NSAttributedString? {
        do {
            return try NSAttributedString(data: self, options: [.documentType: NSAttributedString.DocumentType.html, .characterEncoding: String.Encoding.utf8.rawValue], documentAttributes: nil)
        } catch {
            print("error:", error)
            return  nil
        }
    }
    var html2String: String {
        return html2AttributedString?.string ?? ""
    }
}

extension String {
    var html2AttributedString: NSAttributedString? {
        return Data(utf8).html2AttributedString
    }
    var html2String: String {
        return html2AttributedString?.string ?? ""
    }
}

Xcode 8.3·SWIFT 3.1

代码语言:txt
复制
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:", error)
            return nil
        }
    }
    var html2String: String {
        return html2AttributedString?.string ?? ""
    }
}

代码语言:txt
复制
cell.detailTextLabel?.text = item.itemDescription.html2String
票数 0
EN

Stack Overflow用户

发布于 2018-08-03 14:03:30

这是我建议的答案。如果你想把内部函数放在里面,而不是扩展。

代码语言:txt
复制
func decodeString(encodedString:String) -> NSAttributedString?
    {
        let encodedData = encodedString.dataUsingEncoding(NSUTF8StringEncoding)!
        do {
            return try NSAttributedString(data: encodedData, options: [NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType,NSCharacterEncodingDocumentAttribute:NSUTF8StringEncoding], documentAttributes: nil)
        } catch let error as NSError {
            print(error.localizedDescription)
            return nil
        }
    }

并调用该函数并将NSAttributedString转换为String。

代码语言:txt
复制
let attributedString = self.decodeString(encodedString)
let message = attributedString.string
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100001904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档