检查字符串是否为url - Objective-C

时间:2011-08-10 19:58:51

标签: iphone objective-c xcode ipad

  

可能重复:
  How to validate an url on the iPhone

在Objective-C中,是否有人有一个很好的方法来测试给定字符串是否显示为URL?

2 个答案:

答案 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];
}