如何获取包含特定字符串的所有URL?

时间:2015-07-09 10:29:45

标签: ios objective-c swift

我需要获取所有以" .jpg"结尾的网址。我的代码:

func findPicUrl(url: NSURL){
    var error: NSError?
    var HTML = NSString(contentsOfURL: url, encoding: NSUTF8StringEncoding, error: &error)
    var detector = NSDataDetector(types: NSTextCheckingType.Link.rawValue, error: nil)
    var matches = detector!.matchesInString(HTML! as String, options: nil, range: NSMakeRange(0, HTML!.length))
    for match in matches {
        if (match as! NSString).containsString(".jpg"){
            println(match)
        }
    }
}

它打印所有的网址没有" if statement "但是当我添加" if statement "我收到错误

  

"无法转换类型的值' NSLinkCheckingResult'到' NSString'" **。

如何解决?

3 个答案:

答案 0 :(得分:2)

你必须从URL双重打开NSLinkCheckingResult属性,将其作为NSURL投射,然后你可以使用pathExtension属性来查找" jpg"图片链接:

for match in matches {
    if let temp = match.URL, matchURL = temp as NSURL! {
        if matchURL.pathExtension == "jpg" {
            println(matchURL.absoluteString!)
        }
    }
}

答案 1 :(得分:0)

替换您的for循环代码,如下所示。

   for match in matches {
        if match.rangeOfString(".jpg") != nil{
           println("match")
       }
    }

答案 2 :(得分:0)

文档说:

NSTextCheckingResult是一个用于描述通过文本检查定位的项目的类。这些对象中的每一个都表示在分析文本块期间发现的请求文本内容。

例如,NSTextCheckingResult有一个range属性,其中包含HTML变量中匹配字符串的范围。

试试这个

var error: NSError?
if let HTML = NSString(contentsOfURL: NSURL(string:"http://macfix.de")!, encoding: NSUTF8StringEncoding, error: &error) {
  let detector = NSDataDetector(types: NSTextCheckingType.Link.rawValue, error: nil)
  let matches = detector!.matchesInString(HTML as String, options: nil, range: NSMakeRange(0, HTML.length))
  for match in matches {
    let HTMLmatch = (HTML as NSString).substringWithRange(match.range)
    if HTMLmatch.rangeOfString("jpg") != nil {
      println(HTMLmatch)
    }
  }
}