【发布时间】:2015-08-08 19:59:28
【问题描述】:
如何检查 NSURL 是否有效? 1)如果我输入“facebook.com”,那么它应该添加“http://www”。
2)如果我输入“www.facebook.com”,那么它应该添加“http://”
3) 如果我输入“facebook”,那么它应该在 google 上搜索。
我怎样才能做到这一点??
我正在按照以下方式执行此操作,但它不起作用。对于第三种情况,它总是返回 true。("http://www.facebook")
if (![url.absoluteString.lowercaseString hasPrefix:@"http://"])
{
if(![url.absoluteString.lowercaseString hasPrefix:@"www."])
{
url = [NSURL URLWithString:[@"http://www." stringByAppendingString:locationField.text]];
}
else
{
url = [NSURL URLWithString:[@"http://" stringByAppendingString:locationField.text]];
}
}
if(![self validateUrl:url.absoluteString])
{
url = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.google.com/search?q=%@",[locationField.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]];
}
- (BOOL) validateUrl:(NSString *)candidate
{
NSString *urlRegEx = @"((https|http)://)((\\w|-)+)(([.]|[/])((\\w|-)+))+";
NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx];
return [urlTest evaluateWithObject:candidate];
}
【问题讨论】:
-
为这个url.absoluteString添加一个nslog,并粘贴结果
-
你的逻辑不正确。对于 URL
facebook,您最终将其更改为http://www.facebook,然后对其进行验证。 -
@Walucas nslog = absoluteString=facebook
-
@rmaddy 我怎么知道,是 facebook 还是 facebook.com?
-
检查字符串是否以有效的 TLD 结尾。
标签: ios objective-c search nspredicate nsurl