检查字符串是否为url - Objective-C

Cod*_*Guy 1 iphone xcode objective-c ipad

可能重复:
如何验证iPhone上的URL

在Objective-C中,有没有人有一个很好的方法来测试给定的字符串是否显示为URL?

Pey*_*loW 25

做这个:

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);
 }
Run Code Online (Sandbox Code Playgroud)

如果stringToTest确实是一个URL,那么url将按预期实例化.否则+[NSURL URLWithString:]返回nil.

Cocoa Touch中的大多数方法都会返回nil非法输入,实际上很少有人抛出NSInvalidArgumentException.每个方法都记录了它们在无效输入上返回的内容.

  • Yup - 不适用于xcode 4.6.3和iOS 6上的网址.这个代码示例只返回字符串为url的所有内容 - 我可以将我的名字,simon,因为stringToTest和url最终得到值"西蒙" (3认同)
  • 请记住,这将验证任何URL.因此,即使它是文件URL或Web URL,它们也会通过这种形式的检查验证为true.PeyloW的答案是对的,我只是想让你知道网址不是NSURL接受的唯一类型. (2认同)
  • 另请注意,它会验证部分和相对URL.因此,检查架构和/或域是一个很好的做法. (2认同)
  • 这实际上不起作用.如果字符串为空,或者您只是在字符串"asdf"中输入任何内容,如果url不是nil,则通过此测试. (2认同)