私は他のウェブブラウザと同じように動作するウェブブラウザを作っています。文字列がGoogle検索かURLかを確認する方法は?
フリーフォームのテキストを入力すると、 "vasdfygvaosfh"がGoogle検索を行います。
URLの構造を持つテキスト「abc.com」を入力すると、新しいページが開きます。
この問題の最適な方法は何ですか?ドットがあるかどうかについてのif文を2つだけ持つべきですか? "プレゼントかどうか?
私は他のウェブブラウザと同じように動作するウェブブラウザを作っています。文字列がGoogle検索かURLかを確認する方法は?
フリーフォームのテキストを入力すると、 "vasdfygvaosfh"がGoogle検索を行います。
URLの構造を持つテキスト「abc.com」を入力すると、新しいページが開きます。
この問題の最適な方法は何ですか?ドットがあるかどうかについてのif文を2つだけ持つべきですか? "プレゼントかどうか?
私は、文字列が有効な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;
}
あなたはそれをNSURLにとにかく変換する必要があります。文字列全体がURLでない場合、これはtrueを返しますが、変換は失敗します。 [NSURL URLWithString:string]がnilを返すかどうかを調べるほうが理にかなっています。見つかった場合は検索として扱い、そうでなければURLとして扱います。 – 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