2017-08-30 143 views
0

我有一個macOS應用程序。我需要刪除任何NSURL的方案和www部分。這是我想出了:在NSURL中檢測並移除'www'

// 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的變體不是www2NSURL有什麼方法可以讓我檢測到字符串的www部分? (就像我可以通過調用scheme來檢測字符串的http://部分)。

更新

我不能使用stringByReplacingOccurrencesOfString因爲它將取代的www所有出現。所以如果url恰好是www.testsitewww.tumblr.com那麼它將變成testsite.tumblr.com。這不是我想要的,我只想刪除第一次出現www(或其他任何變體,如www2)。

謝謝,丹。

回答

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 
+0

@Supertecnoboff更新了代碼並進行了測試。請檢查一下。 –

+0

完美地工作,正是我需要的。謝謝! – Supertecnoboff

0

您可以替換文本前的部分:

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

問題是,它會替換所有出現的'''''''''。所以如果url恰好是'''www.testsitewww.tumblr.com''',那麼它就會變成'''testsite.tumblr.com'''。這不是我想要的,我只想刪除第一次出現的'''www'''(或任何其他變體,如'''www2''')。 – Supertecnoboff

+0

你可以檢查文本的開頭 - > [字符串hasPrefix:@「www。」] - >然後子字符串 –

0

做到這一點

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

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

問題在於,它會替換所有出現的'''''''''。所以如果url恰好是'''www.testsitewww.tumblr.com''',那麼它就會變成'''testsite.tumblr.com'''。這不是我想要的,我只想刪除第一次出現的'''www'''(或任何其他變體,如'''www2''')。 – Supertecnoboff

+0

@Supertecnoboff或者你可以在「。」的基礎上分割字符串,並將值傳遞給數組。現在,您可以循環訪問數組,並根據您的需要比較每個索引處的字符串與「WWW/WW2」,如果特定索引處的值與「WWW/WW2」匹配,那麼您可以保留該索引數據,並將其餘的索引數據並將該值附加到字符串中。這樣你的問題就會解決。 – Prakash

+0

讓我再問你是否沒有得到我的答案 – Prakash