我正在使用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
}
答案 0 :(得分: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个字符串。我希望这能帮到你
答案 1 :(得分:0)
我正在使用此代码制作不会崩溃的链接,如果其中有特殊字符,例如:“æøå”
var url = "http://www.someurlwithæøåorsomethingelse.com"
let safeUrl = url.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())