2016-09-29 3 views
0

私はいくつかのソースコードから情報を引き出そうとしています。ソースコード内で複数のインスタンスをループする?

ビューソース:http://www.championcounter.com/mordekaiser

何かの複数の出現は、次のようにあります。

ALT =>

altが= "Mordekaiserはアカリカウンタ"> "Mordekaiserはタロンカウンタ"私は "Talon"と "Akali"を引き出そうとしています。

私は現在、この場合には、リストの最初の人の誰でも取得することができますタロンと:

let sourceArray = sourcecode.components(separatedBy: "alt="Mordekaiser counters") 
let sourceArray2 = sourceArray[1].components(separatedBy: ""/>div>") 
let champ = sourceArray2[0] 

私の問題は、これがその後明らかにTalon-前

すべてのようなソースコードを分割ということです------タロン-------タロン後のすべて

と私はタロンをつかんでいます。

どのようにして、次のアイテムを取得するためにソースコードを調べるにはどうすれば、すべて同じ「separatedBy」コードで囲まれていますか?あなたが最初のように、すべての「カウンター」の情報を引き出すために、正規表現を使用している場合ははるかに簡単に時間を持っているつもりだ

+0

私はモルデカイザーがタロンに逆らっているとは思わない;) –

+0

ハハ、本当です。 – Noowoo

答えて

1

(警告、これは3スウィフトない、2.2スウィフトです):

let pattern = "alt=\".*?\"" 
let s = // source of the page 
let exp = try! NSRegularExpression(pattern: pattern, options: []) 
let res = exp.matchesInString(s, options: [], range: NSMakeRange(0,s.utf16.count)) 
for ares in res { 
    print((s as NSString).substringWithRange(ares.range)) 
} 
var alts = res.map {ares in (s as NSString).substringWithRange(ares.range)} 
alts = alts.filter {($0 as NSString).containsString(" counters ")} 
alts = alts.map {($0 as NSString).substringWithRange(NSMakeRange(5,$0.utf16.count-6))} 

結果は文字列の配列です:

[ "カシオペアはMordekaiserカウンタ"、 "ルクスはMordekaiserカウンタ"、 "ヨリックはMordekaiserカウンタ"、 "XerathはMordekaiserカウンタ"、 "MalzaharはMordekaiserカウンタ"、「Illaoiカウンター「モルダカイザーがタロンを打ち消す」、「モルダカイザーはマールファイトを打ち消す」、「モルダカイザーはアカリアを打ち消す」、 "Mordekaiser counter Gassas"、 "Mordekaiser counter Gragas"]

これで、便利な方法でペアを解析できるようになりました。

+0

以前はパターンを見たことがありません。どうもありがとうございます! – Noowoo

+0

正規表現パターンを使用して、各フレーズから名前を抽出することもできます。正規表現はかなりクールです。 – matt

関連する問題