帮我写一些代码,如“如果我的字符串是一个有效的网址,请不要输入” 是否可以在几串代码中编写代码?如何快速检查NSString对象是否是有效的url?
回答
我会假设通过URL指的是一个标识Internet资源位置的字符串。
如果您对输入字符串的格式有所了解,那么为什么不手动检查字符串是否以http://
,https://
或您需要的任何其他方案开头。如果你希望其他协议,也可以将它们添加到检查列表(例如ftp://
,mailto://
等)
if ([myString hasPrefix:@"http://"] || [myString hasPrefix:@"https://"])
{
// do something
}
如果你正在寻找一个更坚实的解决方案,并检测到任何类型的URL方案,那么你应该使用正则表达式。
作为一个侧面说明,NSURL类旨在表达任何类型的资源位置(不只是互联网资源)。这就是为什么像img/demo.jpg
或file://bla/bla/bla/demo.jpg
这样的字符串可以转换成NSURL对象。
但是,根据文档[NSURL URLWithString]
应返回nil,如果输入字符串不是有效的Internet资源字符串。在实践中它不是。
很好的答案!谢谢。最重要的是它对我来说工作得很好。 – Stas 2012-02-13 18:37:18
尝试使用它创建NSUrl,并查看它是否返回非零结果。
我已经试过: if([NSURL urlWithString:urlString]!= nil){ } } 但由于某种原因,它只是返回给我我的字符串! (虽然方法描述说,如果字符串不是一个有效的网址,它必须返回nil ..不知道为什么) – Stas 2012-02-13 13:08:23
if ([NSURL URLWithString:text]) {
// valid URL
}
else {
// invalid URL
}
这就是它不起作用的地方...我遇到了一个奇怪的错误或什么? ? 我有一个日志在if NSLog(@“invalid url:%@”,[NSURL URLWithString:urlString]);它显示了我: 无效的网址:img/playgrounds.png – Stas 2012-02-13 13:22:49
这就是为什么你应该说你已经试过你的问题。如果你的字符串是字面上的“img/playgrounds.png”,那么它是正确的;这不是一个有效的网址。如果你试着用'http:// img.ly/playground.png',那么它就可以工作。 – 2012-02-13 13:49:04
+ (BOOL)validateUrlString:(NSString*)urlString
{
if (!urlString)
{
return NO;
}
NSDataDetector *linkDetector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:nil];
NSRange urlStringRange = NSMakeRange(0, [urlString length]);
NSMatchingOptions matchingOptions = 0;
if (1 != [linkDetector numberOfMatchesInString:urlString options:matchingOptions range:urlStringRange])
{
return NO;
}
NSTextCheckingResult *checkingResult = [linkDetector firstMatchInString:urlString options:matchingOptions range:urlStringRange];
return checkingResult.resultType == NSTextCheckingTypeLink
&& NSEqualRanges(checkingResult.range, urlStringRange);
}
这个工程。谢谢 – kevinl 2016-02-16 17:14:04
我用这个解决方案,它显然不是一个正则表达式检查一个更好的和不太复杂的检查 -
- (BOOL)isURL:(NSString *)inputString
{
NSURL *candidateURL = [NSURL URLWithString:inputString];
return candidateURL && candidateURL.scheme && candidateURL.host;
}
- 1. 检查对象是否有效?
- 2. 如何检查UITextfield是否快速无效
- 3. 如何检查给定的值是否是有效的URL
- 4. 如何检查字符串是否是有效的HTTP URL?
- 5. 使用jquery检查URL是否有效
- 6. SSIS - 检查URL是否有效
- 7. 检查流式URL是否有效
- 8. 如何检查函数对象是否有效
- 9. 如何检查URL是否具有有效的公共TLD?
- 10. 检查快速会话是否过期
- 11. 快速检查阵列是否相交
- 12. 快速检查实体是否相交?
- 13. 如何检查相对URL是否是PHP中的当前URL?
- 14. 如何检查NSString是否包含'%'?
- 15. 如何检查对象是否是Cocoa中的Foundation对象?
- 16. 如何检查从URL加载的UIImage是否有效
- 17. 如何检查RDD是否有效?
- 18. 如何检查代表是否有效?
- 19. 如何检查BST是否有效?
- 20. 如何检查IndexPath是否有效?
- 21. 如何检查网卡是否有效?
- 22. 如何检查ngform是否有效
- 23. 如何检查对象是否为UIButton
- 24. 如何检查对象是否为空
- 25. 检查cherrypy是否有效
- 26. 检查BitmapData是否有效
- 27. 如何检查PHP对象是否是MongoDate对象?
- 28. 如何检查url是否在iphone上有效
- 29. 如何检查对象是否有respond_to? MyObject#attr_reader:my_property但不是setter
- 30. 检查对话框是否关闭的快速方法?
通过“有效”你仅仅意味着符合语法要求,还是你的意思是指向一个现有网站? – 2012-02-13 12:49:03
我只需要正确的语法.. – Stas 2012-02-13 13:09:10