假设我有一个这样的 html 链接:
<a href = "https://mitsui-shopping-park.com/lalaport/koshien/" target="_blank"> https://mitsui-shopping-park.com/lalaport / koshien / </a>
Run Code Online (Sandbox Code Playgroud)
我想提取:
<a href = "THIS LINK" target="_blank"> NOT THIS LINK </a>
Run Code Online (Sandbox Code Playgroud)
我试过:someString.replacingOccurrences(of: "<[^>]+>", with: "", options: .regularExpression, range: nil)但这给了我:
<a href = "NOT THIS LINK" target="_blank"> BUT THIS LINK </a>
Run Code Online (Sandbox Code Playgroud)
请帮忙。
不需要正则表达式,您可以使用属性字符串的链接属性。
首先,让我们使用这个扩展:
extension String{
func convert2Html() -> NSAttributedString {
guard let data = data(using: .utf8) else { return NSAttributedString() }
do {
let htmlAttrib = NSAttributedString.DocumentType.html
return try NSAttributedString(data: data,
options: [.documentType : htmlAttrib],
documentAttributes: nil)
} catch {
return NSAttributedString()
}
}
}
Run Code Online (Sandbox Code Playgroud)
转换这个String:
let html = "<a href = \"https://mitsui-shopping-park.com/lalaport/koshien/\" target=\"_blank\"> https://mitsui-shopping-park.com/lalaport / koshien / </a>"
Run Code Online (Sandbox Code Playgroud)
到NSAttributedString:
let attrib = html.convert2Html()
Run Code Online (Sandbox Code Playgroud)
然后以这种方式提取链接:
let link = attrib.attribute(.link, at: 0, effectiveRange: nil)
if let url = link as? NSURL, let href = url.absoluteString {
print(href) //https://mitsui-shopping-park.com/lalaport/koshien/
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1408 次 |
| 最近记录: |