检查一个URL是否有http://前缀

在我的应用程序中,当用户添加一个对象时,也可以为这个对象添加一个链接,然后可以在一个webView中打开这个链接。
我试图保存没有http://前缀的链接,然后在webView中打开它,但无法打开它!
在webView开始加载之前,有没有一种方法来检查保存的URL是否有http://前缀? 如果它没有得到它,我怎样才能将前缀添加到URL?
谢谢!

您可以在- (BOOL)hasPrefix:(NSString *)aString使用- (BOOL)hasPrefix:(NSString *)aString方法来查看包含您的URL的NSString是否以http://前缀开始,如果不加上前缀。

 NSString *myURLString = @"www.google.com"; NSURL *myURL; if ([myURLString.lowercaseString hasPrefix:@"http://"]) { myURL = [NSURL URLWithString:myURLString]; } else { myURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@",myURLString]]; } 

我目前远离我的Mac,不能编译/testing这个代码,但我相信上面应该工作。

 NSString * urlString = ...; NSURL * url = [NSURL URLWithString:urlString]; if (![[url scheme] length]) { url = [NSURL URLWithString:[@"http://" stringByAppendingString:urlString]]; } 

我不知道是否有任何方法来检查,但你在代码中检查。

尝试使用

 NSRange range = [urlString rangeOfString:@"http://"]; if (range.location != NSNotFound) // Add http:// 

我在Swift中为String写了一个扩展,看urlstring是http还是https

 extension String{ func isValidForUrl()->Bool{ if(self.hasPrefix("http") || self.hasPrefix("https")){ return true } return false } } if(urlString.isValidForUrl()) { //Do the thing here. } 

如果你正在检查“http://”,你可能会想要不区分大小写的search:

 // probably better to check for just http instead of http:// NSRange prefixRange = [temp rangeOfString:@"http" options:(NSAnchoredSearch | NSCaseInsensitiveSearch)]; if (prefixRange.location == NSNotFound) 

虽然我认为根据您的情况,urlscheme检查是一个更好的答案,因为根据您的使用情况,URL可以以http或https和其他前缀开头。

首先,你应该为NSURL创build一个新的类别:File> New File> Objective-C Category。 你可以按照HTTPURLWithString的方式调用这个类,把它作为NSURL的一个类,按下next并把它添加到你的目标中。 然后在NSURL + HTTPURLFromString.m中实现以下消息(并在.h中声明消息)

 @implementation NSURL (HTTPURLFromString) +(NSURL *)HTTPURLFromString:(NSString *)string { NSString *searchString = @"http"; NSRange prefixRange = [string rangeOfString:searchString options:(NSCaseInsensitiveSearch | NSAnchoredSearch)]; if (prefixRange.length == 4) { return [NSURL URLWithString:string]; } return [NSURL URLWithString:[NSString stringWithFormat:@"http://%@", string]]; } @end 

在WebView中打开链接很简单

 NSString *urlString = @"www.google.com"; NSURL *url = [NSURL HTTPURLFromString:urlString]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; [webView.mainFrame loadRequest:request];