1

我正在使用 NSDataDetector 扫描文本中的链接,然后返回它们。我已经让它适用于常规字母表,但由于我生活在一个对英文字母表有一些补充的国家,我无法使用 NSDataDetector 检测包含这些字符的链接。

具体来说,它是“åäö”不起作用。我的代码如下所示:

 var urlStrings = [String]()

 let types: NSTextCheckingType = .Link

 do {
        let detector = try NSDataDetector(types: types.rawValue)
        let matches = detector.matchesInString(self, options: .ReportCompletion, range: NSMakeRange(0, self.characters.count))

        for match in matches {

            if let url = match.URL?.absoluteString {
                urlStrings.append(url)
            }
        }
        return urlStrings
      } catch {
        return urlStrings
   }
4

2 回答 2

0

您好,我对您的代码进行了一些修改,并为我完美地工作

func detectLinks() -> [String]
{
    let string = "http://www.gåäögle.com/testMasåäö http://www.google.com/testMasåäö http://www.gp.se/livsstil/konsument/vegetariskt-ä4r-inte-alltid-så5-nyttigt-1.1236926"
    var urlStrings = [String]()

    let types: NSTextCheckingType = .Link

    do {
        let detector = try NSDataDetector(types: types.rawValue)
        let matches = detector.matchesInString(string, options: .ReportCompletion, range: NSMakeRange(0, string.characters.count))

        for match in matches {

            if let url = match.URL?.absoluteString {
                urlStrings.append(url)
            }
        }
        return urlStrings
    } catch {
        return urlStrings
    }


}

也许您的问题与self.characters.count您可以检查出了什么问题有关,但对我来说这段代码工作正常,运行这段代码后 urlStrings 包含 3 个字符串。我希望这对你有帮助

于 2016-05-30T17:15:28.650 回答
0

如果其中有特殊字符,我正在使用此代码制作不会崩溃的链接,例如:“æøå”

var url = "http://www.someurlwithæøåorsomethingelse.com"
let safeUrl = url.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
于 2016-05-30T17:25:27.483 回答