如何检测它是Web URL还是路径?
在NSUrl Apple编写的参考页面中,它接受一个URL,如果它是基于标准的,但它接受的任何类型的字符串都是URL,如下代码:
NSURL *url=[NSURL URLWithString:@"/book.xml"];
NSLog(@"%@",url);
这不是一个网址,但是它会保留它并将其作为其值返回。 我已经尝试过这个功能,它可以工作但不是所有的URL!
-(BOOL) urlIsValiad: (NSString *) url {
NSString *regex = @"((?:http|https)://(?:www\\.)?[\\w\\d\\-_]+\\.\\w{2,3}/?(?:[\\w\\d\\-./_]+)?)";
NSPredicate *regextest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
if ([regextest evaluateWithObject: url] == YES) {
NSLog(@"It is a valid URL!");
} else {
NSLog(@"It is not valid URL!");
}
return [regextest evaluateWithObject:url];
}
我担心的是检测其他路径中的网址!
答案 0 :(得分:0)
答案 1 :(得分:0)
NSString *string = @"This is a sample of a http://abc.com/efg.php?EFAei687e3EsA sentence with a URL within it.";
NSDataDetector *linkDetector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:nil];
NSArray *matches = [linkDetector matchesInString:string options:0 range:NSMakeRange(0, [string length])];
for (NSTextCheckingResult *match in matches)
{
if ([match resultType] == NSTextCheckingTypeLink)
{
NSURL *url = [match URL];
NSLog(@"found URL: %@", url);
}
}
这样您就不必依赖不可靠的正则表达式,并且当Apple升级其链接检测代码时,您可以免费获得这些改进。