在Objective-C中,是否有人有一个很好的方法来测试给定字符串是否显示为URL?
答案 0 :(得分:25)
这样做:
NSURL* url = [NSURL URLWithString:stringToTest];
if (url && url.scheme && url.host)//This comparision never fails
{
//the url is ok
NSLog(@"%@ is a valid URL", yourUrlString);
}
如果stringToTest
确实是一个URL,那么url将按预期实例化。否则+[NSURL URLWithString:]
会返回nil
。
Cocoa Touch中的大多数方法都会在非法输入上返回nil
,很少有人实际抛出NSInvalidArgumentException
。每个方法都记录了它们在无效输入时返回的内容。
答案 1 :(得分:-2)
您可以使用正则表达式。对于iPhone 3及更高版本,您可以在没有框架的情况下完成。否则使用RegexKitLite或其他东西。
以下是检查网址的正则表达式模式:
"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+"
没有框架的情况下这样做:
- (BOOL)validateUrl:(NSString *)candidate {
NSString *urlRegEx =
@"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+";
NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx];
return [urlTest evaluateWithObject:candidate];
}