【发布时间】:2015-04-07 16:47:19
【问题描述】:
我从网站获取数据(HTML 字符串)。我想提取所有链接。我写函数(它有效),但它太慢了......
你能帮我优化一下吗?我可以使用哪些标准功能? 功能逻辑:在文本中找到“http://”sting,然后读取字符串(买char),直到不会得到“\””。
extension String {
subscript (i: Int) -> Character {
return self[advance(self.startIndex, i)]
}
subscript (i: Int) -> String {
return String(self[i] as Character)
}
subscript (r: Range<Int>) -> String {
return substringWithRange(Range(start: advance(startIndex, r.startIndex), end: advance(startIndex, r.endIndex)))
}}
func extractAllLinks(text:String) -> Array<String>{
var stringArray = Array<String>()
var find = "http://" as String
for (var i = countElements(find); i<countElements(text); i++)
{
var ch:Character = text[i - Int(countElements(find))]
if (ch == find[0])
{
var j = 0
while (ch == find[j])
{
var ch2:Character = find[j]
if(countElements(find)-1 == j)
{
break
}
j++
i++
ch = text[i - Int(countElements(find))]
}
i -= j
if (j == (countElements(find)-1))
{
var str = ""
for (; text[i - Int(countElements(find))] != "\""; i++)
{
str += text[i - Int(countElements(find))]
}
stringArray.append(str)
}
}
}
return stringArray}
【问题讨论】:
-
您可以使用正则表达式。
-
可以尝试开源库html解析。 raywenderlich.com/14172/how-to-parse-html-on-ios