html - 如何将html转换为字符串
问题描述
为了将 html 转换为字符串,我使用了这个扩展:
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 ?? ""
}
}
但是我在 API 中得到的文本我必须使用NSAttributedString.DocumentType.html
并且有时使用NSAttributedString.DocumentType.plain
如何结合这两个参数?
解决方案
这些扩展的作用是 (1) 从 HTML 字符串中创建Data
对象,(2) 将Data
对象转换为NSAtrributedString
对象。换句话说,它如下所示。
import UIKit
class ViewController: UIViewController {
// MARK: - Variables
// MARK: - IBOutlet
@IBOutlet weak var label: UILabel!
// MARK: - IBAction
override func viewDidLoad() {
super.viewDidLoad()
let htmlStr = makeHTMLString()
let data = Data(htmlStr.utf8)
if let attributedString = try?NSAttributedString(data: data, options: [.documentType: NSAttributedString.DocumentType.html], documentAttributes: nil) {
//print(attributedString.string)
label.attributedText = attributedString
}
}
func makeHTMLString() -> String {
return "<html>\n<head></head>\n<body>\n<h1>Hello, world!</h1>\n</body>\n</html>"
}
}
最后,您不需要这些扩展。
推荐阅读
- ios - 使用 Date UIPicker 和 Normal Picker 设置文本字段时出错,我尝试了很多东西但出现错误
- javascript - 映射具有嵌套值的对象数组并返回
- wpf - Wpf Style 仅在编辑器视图中应用
- android - Android:尽管目录中存在文件,但 listFiles() 返回 null
- ios - 从 Alamofire 闭包返回一个值
- java - IllegalArgumentException:使用 Zip 文件系统提供程序时路径组件应为“/”
- swift - iOS 网络扩展错误创建 TUN/TAP 接口 SIOCGIFMTU 失败:设备未配置
- eclipse - 尝试通过 Marketplace 在 Eclipse 中安装软件时如何解决 SunCertPathBuilderException?
- android - RecyclerView 按具体细节排序
- javascript - 获取子组件Vue中的v-model值