2017-02-17 76 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]; 
} 
相關問題