【发布时间】:2011-10-24 10:08:09
【问题描述】:
【问题讨论】:
标签: iphone objective-c xcode ipad
【问题讨论】:
标签: iphone objective-c xcode ipad
这样做:
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。每个方法都记录了它们在无效输入时返回的内容。
【讨论】:
您可以使用正则表达式。对于 iPhone 3 及更高版本,您可以在没有框架的情况下执行此操作。否则使用 RegexKitLite 之类的。
这是一个用于检查 URL 的正则表达式模式:
"(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];
}
【讨论】:
NSURL,如 PeyloW 所述。 NSURL 旨在处理完整的 URL 标准;最好不要重新发明轮子。