2017-01-08 9 views
0

文字列では、HTMLファイルの生の内容を保存します。このファイルには以下の通りです:文字列から特定のHTMLスニペットを削除する方法

<div class="input-wrapper"> 
     <input type="search" name="search" placeholder="page" title="Page" accesskey="f" id="searchInput" class="search" autocomplete="off" readonly=""> 
</div> 

私はこれに伴い、これを削除する:

<div><a title="Open main menu" href="/wiki/Special:MobileMenu" class="mw-ui-icon mw-ui-icon-element mw-ui-icon-mainmenu main-menu-button" id="mw-mf-main-menu-button">Open main menu</a></div> 

これを行うには、簡単な操作はありますか?それとも、ファイル全体をトークン化する方がうまくいくのでしょうか?

+0

私はswift上でhtmlを解析するために過去にこのライブラリを使用しました。 – Sri

答えて

0

Sriの示唆どおりにHTMLパーサライブラリを使用することができます.HTMLパーサライブラリは、HTMLをさらに操作する場合や、今後HTMLが変更されないことを保証できない場合にお勧めします。特定のHTMLを除外しているだけの場合は、より軽い代替として正規表現を使用できます。

do 
{ 
    let html = "<html> ... </html>" 
    let regex:NSRegularExpression = try NSRegularExpression(pattern: "<div\\s*(?:class=\"input-wrapper\")?>\\s*(?:<input type=\"search\" name=\"search\" placeholder=\"page\" title=\"Page\" accesskey=\"f\" id=\"searchInput\" class=\"search\" autocomplete=\"off\" readonly=\"\">)?(?:<a title=\"Open main menu\" href=\"\\/wiki\\/Special:MobileMenu\" class=\"mw\\-ui\\-icon mw\\-ui\\-icon\\-element mw\\-ui\\-icon\\-mainmenu main\\-menu\\-button\" id=\"mw\\-mf\\-main\\-menu\\-button\">Open main menu<\\/a>)?\\s*<\\/div>", options: NSRegularExpression.Options.caseInsensitive) 
    let range = NSMakeRange(0, html.characters.count) 
    let htmlStripped:String = regex.stringByReplacingMatches(in: html, options: NSRegularExpression.MatchingOptions(), range:range , withTemplate: "") 
} 
catch 
{ 
     // ... 
} 

十分にテストされていないSwift 3.0。

+0

空のdivが削除されていることに気付きました。調整したいかもしれません。 –

関連する問題