Можно создать дубликат:
How to validate an url on the iPhoneПроверка, если строка является URL - Objective-C
В Objective-C, кто-нибудь есть хороший способ, чтобы проверить, если появится данная строка быть URL-адресом?
Можно создать дубликат:
How to validate an url on the iPhoneПроверка, если строка является URL - Objective-C
В Objective-C, кто-нибудь есть хороший способ, чтобы проверить, если появится данная строка быть URL-адресом?
Вы можете использовать регулярное выражение. Для iPhone 3 и выше вы можете сделать это без рамки. В противном случае используйте RegexKitLite или что-то в этом роде.
Вот регулярное выражение шаблон для проверки URL-адресов:
"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+"
Делать это без рамки:
- (BOOL)validateUrl:(NSString *)candidate {
NSString *urlRegEx =
@"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+";
NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx];
return [urlTest evaluateWithObject:candidate];
}
ли это:
NSURL* url = [NSURL URLWithString:stringToTest];
if (url && url.scheme && url.host)//This comparision never fails
{
//the url is ok
NSLog(@"%@ is a valid URL", yourUrlString);
}
Если stringToTest
действительно является URL, то URL будет экземпляр, как и ожидалось. В противном случае +[NSURL URLWithString:]
возвращение nil
.
Большинство методов в Cocoa Touch return nil
на незаконном вводе, очень немногие фактически бросают NSInvalidArgumentException
. Каждый метод документируется тем, что они возвращают с недопустимым вводом.
Ницца. Никогда не думал бы использовать NSURL для проверки строки url. –
Просто помните, что это подтвердит ЛЮБОЙ URL. Поэтому, даже если это URL-адрес файла или веб-URL, они будут проверять правильность с помощью этой формы проверки. Ответ PeyloW прав, я просто хотел сообщить вам, что веб-URL - это не единственный тип, который принимает NSURL. –
Также обратите внимание, что он проверяет частичные и относительные URL-адреса. Таким образом, проверка схемы и/или домена также может быть хорошей практикой. – PeyloW
Используйте 'NSURL', как описано PeyloW. NSURL предназначен для обработки полного стандарта URL; лучше всего не изобретать колесо. – bbum
Truth ^^ Я забыл про NSUrl. НО, если по какой-то причине вы захотите расслабиться (или сделать более строгим, NSUrl примет префиксы, отличные от http и https), стандарт проверки, который вы все еще можете захотеть определить свой собственный шаблон. – mattacular
Yah - но вы, вероятно, захотите начать с [вероятно, значительно более сложного] выражения, принимающего стандарт, а затем отступить для поддержки нестандартных URL-адресов. Или, лучше, исправить источник недействительных URL-адресов. :) – bbum