2017-02-17 75 views
0

我在做一个Web浏览器就像任何其他的Web浏览器。如何检查一个字符串是否是一个谷歌搜索或URL?

  • 如果您键入的文本是自由格式:“vasdfygvaosfh”,它将执行Google搜索。

  • 如果键入具有URL的结构化文本:“abc.com”这将掀开新的一页。

什么是这个问题的最好方法?我是否应该就几个关于是否有点的if语句进行说明。“现在与否?

+0

看到这个[链接] (http://stackoverflow.com/questions/28079123/how-to-check-validity-of-url-in-swift)为基本 – Florensvb

回答

0

我用这个代码(在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

0

你可以尝试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]; 
} 
相关问题