我在做一個Web瀏覽器就像任何其他的Web瀏覽器。如何檢查一個字符串是否是一個谷歌搜索或URL?
如果您鍵入的文本是自由格式:「vasdfygvaosfh」,它將執行Google搜索。
如果鍵入具有URL的結構化文本:「abc.com」這將掀開新的一頁。
什麼是這個問題的最好方法?我是否應該就幾個關於是否有點的if語句進行說明。「現在與否?
我在做一個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;
}
你將不得不反正轉換爲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