在Swift中将HTML转换为纯文本(不使用NSAttributedString)

我需要将一些HTML转换为纯文本,并尝试了这里概述的方法:

Convert HTML to Plain Text in Swift

问题是在iOS 8.2上,NSAttributedString有一个错误,当HTML在后台线程上呈现为纯文本时,可能导致EXC_BAD_ACCESS崩溃(WebKit内部).转换需要在后台线程上完成,因为它可以(通常确实)需要一段时间.

所以我需要一个更原始的Swift解决方案,理想情况下是一个惯用的解决方案.

它也让我觉得这可能是那些有一个优雅而整洁的功能解决方案的问题之一 – 它本质上是对String的一个filter()操作吗?

最佳答案
派对有点晚,但认为这会让其他游客受益……

基本上我从here开始采用解决方案并将其转换为Swift 3语法.

解决方案使用Scanner(以前的NSScanner)查找“<”的出现然后扫描到“>”将所有内容考虑在内,将其保存到NSString变量中.
然后只需使用在NSString变量中传递的replacementOccurrences(of:with 🙂

这是最终函数的样子:

private func stripHTML(fromString rawString: String) -> String {
    let scanner: Scanner = Scanner(string: rawString)
    var text: NSString? = ""
    var convertedString = rawString
    while !scanner.isAtEnd {
        scanner.scanUpTo("<", into: nil)
        scanner.scanUpTo(">", into: &text)
        convertedString = convertedString.replacingOccurrences(of: "\(text!)>", with: "")
    }

    return convertedString
}

转载注明原文:在Swift中将HTML转换为纯文本(不使用NSAttributedString) - 代码日志