从String创建有效的URL

时间:2012-08-16 16:17:47

标签: objective-c

是否有任何API或良好的函数来格式化字符串 “www.example.com”或只是“example.com”来表示有效的urlstrings “http://www.example.com”?

+ (NSString*)complete:(NSString *)urlString
{
    NSArray * urlParts = [urlString componentsSeparatedByString:@"."];
    if(urlParts.count==3)
        return [NSString stringWithFormat:@"http://www.%@.%@",[urlParts objectAtIndex:1],[urlParts objectAtIndex:2]];
    else if(urlParts.count==2)
        return [NSString stringWithFormat:@"http://www.%@.%@",[urlParts objectAtIndex:0],[urlParts objectAtIndex:1]];
    return nil;
}

这就是目前的解决方案,但对我来说这看起来并不是很好。

1 个答案:

答案 0 :(得分:4)

您可以使用NSDataDetector

轻松完成此操作
NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:NULL];
NSString *URLString = @"www.example.com";
NSTextCheckingResult *result = [detector firstMatchInString:URLString options:0 range:NSMakeRange(0, URLString.length)];
if (result) {
    NSURL *URL = [result URL];
    NSLog(@"%@", URL); // http://www.example.com
}

您不应该假设www是任何给定域名的有效子域名。

如果您需要将结果作为字符串,则可以使用absoluteString的{​​{1}}方法,但通常最好使用NSURL代替NSURL