String 如何在swift中从字符串中删除一些特定的HTML标记?
我有下面的教程,一切都很好,但我想在我的应用程序中修改它。在我的应用程序中,我想从我的HTML视图中删除一些HTML标记,因为我将网页的整个HTML代码保存到一个字符串中,现在我想修改该字符串,就像我想从中删除一些标记一样,但我不知道如何从该字符串中删除一些特定标记,我从该教程中获得以下代码:String 如何在swift中从字符串中删除一些特定的HTML标记?,string,swift,String,Swift,我有下面的教程,一切都很好,但我想在我的应用程序中修改它。在我的应用程序中,我想从我的HTML视图中删除一些HTML标记,因为我将网页的整个HTML代码保存到一个字符串中,现在我想修改该字符串,就像我想从中删除一些标记一样,但我不知道如何从该字符串中删除一些特定标记,我从该教程中获得以下代码: func loadTutorials(){ var tutorialsUrl : NSURL = NSURL(string: "https://developer.apple.com/l
func loadTutorials(){
var tutorialsUrl : NSURL = NSURL(string: "https://developer.apple.com/library/mac/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-XID_467")!
var tutorialsHtmlData : NSData = NSData(contentsOfURL: tutorialsUrl)!
var string = NSString(data: tutorialsHtmlData, encoding: NSUTF8StringEncoding)
println(string!)
// var tutorialsParser : TFHpple = TFHpple(HTMLData: tutorialsHtmlData)
//
// var tutorialsXpathQueryString:String = "//div[@class='content-wrapper']/p[@class='header-text']/a"
//
//
//
// var tutorialsNodes : Array = tutorialsParser.searchWithXPathQuery(tutorialsXpathQueryString)
//
// var newTutorials : NSMutableArray = NSMutableArray(capacity: 0)
//
// for element in tutorialsNodes as [TFHppleElement]{
//
// // 5
// var tutorial : Tutorial = Tutorial()
// newTutorials.addObject(tutorial)
//
// // 6
// tutorial.title = element.firstChild.content
//
// // 7
// tutorial.url = element.objectForKey("href")
// }
}
通过此链接,我想从HTML中删除以下元标记:
最简单的方法是使用NSRegularExpression。这允许查找]*>并将其替换为空字符串。这在大多数情况下都有效。还要注意的是,上面的正则表达式只是我脑海中勾勒出来的一个又快又脏的正则表达式
更安全的方法是使用XML解析器。但是,在这种情况下,您可能会失败,因为许多HTML源不符合XML。这里有一个快速实现,它并不像建议的那样完美,您也可以使用正则表达式来实现这一点,但它是有效的。我不得不更改从您的代码到另一个站点的链接,因为它引发了一个异常,可能是因为developer.apple.com需要授权
func loadTutorials() {
var tutorialsUrl: NSURL = NSURL(string: "http://rinatkhanov.me/")!
var tutorialsHtmlData : NSData = NSData(contentsOfURL: tutorialsUrl)!
var input = NSString(data: tutorialsHtmlData, encoding: NSUTF8StringEncoding)
let lines = input?.componentsSeparatedByString("\n") as [String]
var result = ""
for line in lines {
if !line.hasPrefix("<meta") {
result += "\n" + line
}
}
println(result)
}
它只是在行上进行迭代,并消除具有打开元标记的行 试试这个,它在swift中可以很好地用于删除html
let html: String = webView.stringByEvaluatingJavaScriptFromString("document.documentElement.outerHTML")!
do {
let regex:NSRegularExpression = try NSRegularExpression( pattern: "<.*?>", options: NSRegularExpressionOptions.CaseInsensitive)
let range = NSMakeRange(0, html.characters.count)
let htmlLessString :String = regex.stringByReplacingMatchesInString(html, options: NSMatchingOptions(), range:range , withTemplate: "")
print("Html Printing For payment \(htmlLessString)") jsonParsingOfWebviewReturn(htmlLessString)
} catch {
// report error
}
可通过以下方式轻松完成:
谢谢你的回复,你的代码运行得很好,但我不想只删除元标记,而是要删除很多标记,就像这是可能实现的一样?
var htmlString // your html
let doc = try! SwiftSoup.parse(htmlString) // init SwiftSoup object
doc.select("meta").remove() // css query to select, then remove
try! htmlString = doc.outerHtml() // get the modified html