2016-09-29 66 views
0

我试图从一些源代码中提取信息。在源代码中循环多个实例?

视图源:http://www.championcounter.com/mordekaiser

有某物多次出现这样的:

ALT = “Mordekaiser计数器泰龙”>

ALT = “Mordekaiser计数器阿卡里”>

我期待拉出“Talon”和“Akali”。

我目前能得到谁在列表中的第一人,在这种情况下爪具有:

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

我的问题是,这则显然分裂像Talon-前

一切的源代码------ Talon ------- Talon之后的一切

我只是抓住了Talon。

然后,我将如何继续筛选源代码以获取所有被相同的“separateBy”代码包围的下一个项目?

+0

我不认为莫德凯撒计数塔隆;) –

+0

哈哈,非常真实。 – Noowoo

回答

1

你将有一个更容易的时间,如果你第一次使用正则表达式来拔出所有“计数器”的信息,像这样(警告,这是雨燕2.2,而不是斯威夫特3):

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计数器“莫德凯撒尔”,“莫德凯撒尔塔隆”,“莫德凯塞尔反击玛菲特”,“莫德凯塞尔反击阿卡利”,“莫德凯伊SER反驳戴安娜”,‘Mordekaiser专柜Kassadin’,‘Mordekaiser专柜Gragas’]

现在你已经得到的东西,你可以开始解析为一个有用的方法对。

+0

我从来没有见过模式。非常感谢! – Noowoo

+0

您还可以使用正则表达式模式从每个短语中提取名称!正则表达式非常酷。 – matt