提问人:mclaughj 提问时间:10/11/2008 最后编辑:Ned Batcheldermclaughj 更新时间:11/6/2008 访问量:3503
在 Cocoa 应用程序中验证用户输入的 URL 的最佳方法是什么?
What's the best way to validate a user-entered URL in a Cocoa application?
问:
我正在尝试构建一个自制的网络浏览器,以更加熟练地掌握 Cocoa。我需要一种很好的方法来验证用户是否输入了有效的 URL。我尝试过一些正则表达式,但 NSString 有一些有趣的怪癖,并且不喜欢我见过的大多数正则表达式使用的一些反引号。
答:
5赞
Jon Shea
10/11/2008
#1
可以从 NSURL
的 + (id)URLWithString:(NSString *)URLString
方法开始,如果字符串格式不正确,则返回该方法。nil
如果需要进一步验证,可以使用 、 、 、 等 方法为 URL 提供特定组件,然后您可以以任何您认为合适的方式对其进行评估。baseURL
host
parameterString
path
评论
5赞
Paul Wieland
9/10/2011
对于对此感到困惑的人:NSURL *myURL = [NSURL URLWithString:@“test”];if(myURL){ } 是不够的,因为“test”是有效的 URL。你可能想添加 use: if (myURL & myURL.scheme & myURL.host) { }
0赞
Eugene P
7/9/2014
如果 (myURL & myURL.scheme && myURL.host) { } 这将不起作用。它仍然对 ULR 有效,例如“xxxx://xxxx://www.googl.com”
4赞
danwood
10/11/2008
#2
我发现可以输入一些看似可以但被 NSURL 创建方法拒绝的 URL。因此,我们有一个方法可以首先对字符串进行转义,以确保它的格式良好。这是它的精髓:
NSString *escapedURLString = NSMakeCollectable(CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)URLString, (CFStringRef)@"%+#", // Characters to leave unescaped NULL, kCFStringEncodingUTF8));
上一个:验证网页
下一个:基于 PHP 的表单验证
评论