2017-02-17 10 views
0

私は他のウェブブラウザと同じように動作するウェブブラウザを作っています。文字列がGoogle検索かURLかを確認する方法は?

  • フリーフォームのテキストを入力すると、 "vasdfygvaosfh"がGoogle検索を行います。

  • URLの構造を持つテキスト「abc.com」を入力すると、新しいページが開きます。

この問題の最適な方法は何ですか?ドットがあるかどうかについてのif文を2つだけ持つべきですか? "プレゼントかどうか?

+0

は、この[リンク]を参照してください。 (http://stackoverflow.com/questions/28079123/how-to-check-validity-of-url-in-swift)基本的に同じ質問 – Florensvb

答えて

0

私は、文字列が有効なURLであるかどうかを確認するために、このコード(NSString上のカテゴリ)を使用します。

- (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]がnilを返すかどうかを調べるほうが理にかなっています。見つかった場合は検索として扱い、そうでなければURLとして扱います。 – 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]; 
} 
関連する問題