0

是否有任何 API 或良好的函数可以将“www.example.com”或“example.com”等字符串格式化为“http://www.example.com”等有效的 urlstrings?

+ (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;
}

这就是当前解决方案的样子,但这对我来说看起来不是很好和可靠。

4

1 回答 1

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方法NSURL,但通常最好使用NSURL而不是NSString用于 URL。

于 2012-08-16T16:40:59.053 回答