我正在尝试建立一个自制网络浏览器,以便更加熟练地掌握Cocoa。我需要一种好方法来验证用户是否输入了有效的URL。我已经尝试了一些正则表达式但是NSString有一些有趣的怪癖,并且不喜欢我曾经看过的大多数正则表达式的反引用。
答案 0 :(得分:5)
您可以从+ (id)URLWithString:(NSString *)URLString
的NSURL
方法开始,如果字符串格式错误,则返回nil
。
如果您需要进一步验证,可以使用baseURL
,host
,parameterString
,path
等方法为您提供网址的特定组成部分,然后可以用你认为合适的方式进行评估。
答案 1 :(得分:4)
我发现可以输入一些似乎没问题但被NSURL创建方法拒绝的网址。所以我们有一个方法来首先转义字符串,以确保它的格式良好。以下是它的内容:
NSString *escapedURLString = NSMakeCollectable(CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)URLString, (CFStringRef)@"%+#", // Characters to leave unescaped NULL, kCFStringEncodingUTF8));