检测&删除' www'在NSURL

时间:2017-08-30 11:00:20

标签: objective-c nsstring nsurl host

我有一个macOS应用程序。我需要从任何www中删除该方案和NSURL部分。这就是我想出的:

// For testing purposes.
NSString *blogID = @"https://www.testing1234.tumblr.com";

// Create the corrected link string.
NSString *correctLink;

// Convert the string to a url.
NSURL *url = [NSURL URLWithString:blogID];

// Check if the url has a scheme.

if ([url scheme] != nil) {
    correctLink = [url host];
} else {
    correctLink = blogID;
}

// Ensure there are enough characters before
// performing the necessary 'www.' checks.

if ([correctLink length] > 4) {

    // Remove the first instance of 'www.'
    // from the blog url link string.

    if ([[correctLink substringToIndex:4] containsString:@"www."]) {
        correctLink = [correctLink substringFromIndex:4];
    }
}

NSLog(@"correctLink: %@", correctLink);

我的问题是:如何可靠地删除字符串的www部分?首先,www的{​​{1}}变体不同,如www2NSURL是否有任何方法可以让我检测字符串的www部分? (就像我通过调用http://来检测字符串的scheme部分一样。

更新

我无法使用stringByReplacingOccurrencesOfString,因为它会取代www所有次出现。因此,如果网址恰好是www.testsitewww.tumblr.com,那么它将变为testsite.tumblr.com。这不是我想要的,我只想删除第一次出现的www(或任何其他变体,例如www2)。

谢谢,Dan。

3 个答案:

答案 0 :(得分:1)

@Supertecnoboff试试这种方式。 您可以将网址分隔为"。"你可以得到剩余的字符串。

- 如果www。或www2。或其他任何东西它会被"分开。"你可以得到剩下的字符串

NSString *blogID = @"https://www.testing1234.tumblr.com";
    NSString *correctLink;
    NSURL *url = [NSURL URLWithString:blogID];
    if ([url scheme] != nil) {
        correctLink = [url host];
    } else {
        correctLink = blogID;
    }
    NSArray *arr = [correctLink componentsSeparatedByString:@"."];
    NSString *str = @"";
    for(int i=1; i<arr.count; i++)
    {
        str = [str stringByAppendingString:[arr objectAtIndex:i]];
        if(i != arr.count-1)
            str = [str stringByAppendingString:@"."];
    }
    NSLog(@"correctLink: %@", str); //correctLink: testing1234.tumblr.com

答案 1 :(得分:0)

您可以替换部分文字:

NSString* url = [urlWithWWW stringByReplacingOccurrencesOfString:@"www." withString:@""];

答案 2 :(得分:0)

这样做

NSString *blogID = @"https://www.testing1234.tumblr.com";
[blogID stringByReplacingOccurrencesOfString:@"www" withString:@""];
//or
[blogID stringByReplacingOccurrencesOfString:@"www." withString:@""];

 if([blogID hasPrefix:@"www"]) {
//do stuff
 }