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

标签 html ios swift functional-programming foundation

我需要将一些 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/

相关文章:

html - 提交后旧的谷歌表单重定向

ios - 从 CocoaPods 资源包加载图像

ios - 应用程序将终止通知

swift - 通过函数设置内部时,如何再次调用didSet?

html - 如何制作带有渐变和阴影的CSS曲线框

html - twitter bootstrap navbar 固定顶部重叠站点

ios - 可以嵌套可重用的 UICollectionViewCells

xcode - touchesbegan/moved/ended 不适用于 xcode 6.3

ios - 适用于 iOS 的 Swift TableView

javascript - 如何使用 jquery 或 javascript 隐藏 div?