我使用NSDataDetector扫描文本中的链接,然后返回它们。我已经让它在常规字母表上工作,但由于我生活的国家有一些英语字母表的补充,我不能使用NSDataDetector来检测包含这些字符的链接。
具体地说,它是不起作用的“doesnäö”。我的代码如下所示:
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
}发布于 2016-05-31 01:15:29
您好,我做了一点修改你的代码,并完美地为我工作
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-31 01:25:27
我使用这段代码来创建链接,如果链接中有特殊字符,就不会崩溃,比如:
var url = "http://www.someurlwithæøåorsomethingelse.com"
let safeUrl = url.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())https://stackoverflow.com/questions/37527375
复制相似问题