我需要将一些 HTML 转换为纯文本并尝试了此处概述的方法:
Convert HTML to Plain Text in Swift
问题是在 iOS 8.2 上,NSAttributedString 有一个错误,当在后台线程上将 HTML 呈现为纯文本时,该错误可能会导致 EXC_BAD_ACCESS 崩溃(深入 WebKit 内部)。转换需要在后台线程上完成,因为它可能(而且通常)需要一段时间。
所以我需要一个更原始的 Swift 解决方案,最好是惯用的解决方案。
这也让我感到震惊,这可能是那些具有优雅和简洁的功能解决方案的问题之一 - 它本质上肯定是对字符串的 filter()
操作?
最佳答案
晚会有点晚,但认为这对其他访客有好处......
基本上我已经从here中获取了解决方案并将其转换为 Swift 3 语法。
Solution 使用 Scanner(以前称为 NSScanner)查找出现的“<”,然后扫描到“>”并考虑其间的所有内容,并将其保存到 NSString 变量中。
然后只需使用 replacingOccurrences(of:with:)
传入 NSString 变量
这是最终函数的样子:
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
}
关于html - 在 Swift 中将 HTML 转换为纯文本(不使用 NSAttributedString),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30212386/