如何检查一个字符串是否是一个谷歌搜索或URL?
问题描述:
我在做一个Web浏览器就像任何其他的Web浏览器。如何检查一个字符串是否是一个谷歌搜索或URL?
如果您键入的文本是自由格式:“vasdfygvaosfh”,它将执行Google搜索。
如果键入具有URL的结构化文本:“abc.com”这将掀开新的一页。
什么是这个问题的最好方法?我是否应该就几个关于是否有点的if语句进行说明。“现在与否?
答
我用这个代码(在NSString
类别)来检查一个字符串是否是一个有效的URL:
- (BOOL) isValidURLString
{
BOOL result = NO;
if (!self.length)
return result;
NSError *error = NULL;
NSDataDetector *urlDetector = [NSDataDetector dataDetectorWithTypes: NSTextCheckingTypeLink error: &error];
NSUInteger numberOfMatches = [urlDetector numberOfMatchesInString: self
options: 0
range: NSMakeRange(0, self.length)];
if (!error && numberOfMatches > 0)
result = YES;
return result;
}
+0
你将不得不反正转换为NSURL同样的问题,并如果整个字符串不是URL,则返回true,但转换将失败。它更有意义,只是看看[NSURL URLWithString:String]返回零。如果确实如此,请将其视为搜索,否则将其视为网址。 – dgatwood
答
你可以尝试regex
为:
- (BOOL)isValidURL:(NSString *)candidate{
NSString *urlRegEx = @"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+";
NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx];
return [urlTest evaluateWithObject:candidate];
}
看到这个[链接] (http://stackoverflow.com/questions/28079123/how-to-check-validity-of-url-in-swift)为基本 – Florensvb