「http://www.youtube.com」 - > 「.COM」
「http://www.google.com.gr」 - > 「.com.gr」
「https://made.in.china.chinesewebsite.닷컴」 - >
「닷컴」。URL的主機是死衚衕。
NSURL *URL;
[URL host];
「http://www.youtube.com」 - > 「.COM」
「http://www.google.com.gr」 - > 「.com.gr」
「https://made.in.china.chinesewebsite.닷컴」 - >
「닷컴」。URL的主機是死衚衕。
NSURL *URL;
[URL host];
獲取URL的主機,在.
分隔符打破它,並採取最後一個組件。
- (NSString *) tldOfURL: NSURL *theURL; {
NSString *host = theURL.host;
NSArray *parts = [host componentsSeparatedByString: @"."];
if parts.count < 2 {
return nil;
}
return parts.lastObject;
}
起初,我的回答是使用NSURLComponents
,因爲在大多數情況下,這個類爲您完成所有繁重的工作,但它看起來像它沒有用於提取TLD的機制。
請注意,如果主機名不包含至少一個句點(.
),則上述內容將返回nil,並且如果主機以句點結尾,則返回空字符串。這兩種情況都應該視爲錯誤。
P.S.我開始在Objective-C語法中生鏽。很難相信,考慮到我花了多少年編寫Objective-C!
這不適用於「.com.gr」或由多個由點分隔的組件組成的任何其他TLD。附:你的名字聽起來很熟。 :) – Vulkan
http://stackoverflow.com/questions/20430620/is-it-possible-to-just-get-the-domain-and-tld-from-an-nsurl-no-www-or-anything –
The回答理所當然地認爲你知道你在找什麼,並且它實現了一個比較。它適用於[URL isFromWebsite:「youtube.com」]以及[URL isFromWebsite:「。com」]; – Vulkan
但'.com.gr'不是TLD--'.gr'。 –