我正在使用一个函数来修复无法直接加载到 WKWebView 中的 URL。
我依靠 NSDataDetector 来检查 URL 是否有效。
NSError *error = NULL;
NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:&error];
NSUInteger numberOfMatches = [detector numberOfMatchesInString:URLString options:0 range:NSMakeRange(0, URLString.length)];
if (!error && numberOfMatches > 0) {
// Valid URL
}
else {
// Invalid URL
// Custom code runs here to fix it...
}
这是它不起作用的示例:
"/d.scdn.com/images/photo.jpg" ---> "http://stockimages.com/d.scdn.com/images/photo.jpg"
这就是应该如何进行转换,但它会识别
"/d.scdn.com/images/photo.jpg"
作为一个有效的 URL 并且修复代码不会执行。
如您所见,上面示例的问题是域名嵌套在我想要修复的字符串中,从而欺骗 NSDataDetector 获取实际 URL。
有没有办法利用 numberOfMatches 来解决这个问题?与原始字符串相关的 URL 是否存在最小匹配数?