开发者

How to determine if a string is a URL in Objective-C

I'm new to iPhone development and Objective-C. Using the ZBar SDK I've developed a basic app which scans a QR image from th开发者_StackOverflow中文版e photo album and outputs what it translates to.

I want to know if there is a way to take this output, determine whether it is a URL and if so open it in a web browser.


NSURL's URLWithString returns nil if the URL passed is not valid. So, you can just check the return value to determine if the URL is valid.

UPDATE

Just using URLWithString: will usually not be enough, you probably also want to check if the url has a scheme and a host, otherwise, urls such as al:/dsfhkgdsk will pass the test.

So you probably want to do something like this:

NSURL *url = [NSURL URLWithString:yourUrlString];
if (url && url.scheme && url.host)
{
   //the url looks ok, do something with it
   NSLog(@"%@ is a valid URL", yourUrlString);
}

If you only want to accept http URLs you may want to add [url.scheme isEqualToString:@"http"].


Here is an alternative solution which I came across. You can do like this.

NSURLRequest *req = [NSURLRequest requestWithURL:[NSURL URLWithString:@"yourstring"]];
bool valid = [NSURLConnection canHandleRequest:req];

Source : https://stackoverflow.com/a/13650542/2513947


You can look at below code to check whether a string contains website url or simple text.

 NSString *getString =[[NSUserDefaults standardUserDefaults]valueForKey:@"searchKey"];
    if([getString rangeOfString:@"Www"].location == NSNotFound
       && [getString rangeOfString:@"www"].location == NSNotFound && [getString rangeOfString:@"com"].location == NSNotFound)
    {
        [companyNameTF setText:[[NSUserDefaults standardUserDefaults]valueForKey:@"searchKey"]];
    }
    else
    {
         [websiteTF setText:[[NSUserDefaults standardUserDefaults]valueForKey:@"searchKey"]];
    }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜