2017-01-06 80 views
0

例如:我怎樣才能得到一個NSURL的頂級域名?

http://www.youtube.com」 - > 「.COM」

http://www.google.com.gr」 - > 「.com.gr」

https://made.in.china.chinesewebsite.닷컴」 - >

「닷컴」。

URL的主機是死衚衕。

NSURL *URL; 

[URL host]; 
+0

http://stackoverflow.com/questions/20430620/is-it-possible-to-just-get-the-domain-and-tld-from-an-nsurl-no-www-or-anything –

+0

The回答理所當然地認爲你知道你在找什麼,並且它實現了一個比較。它適用於[URL isFromWebsite:「youtube.com」]以及[URL isFromWebsite:「。com」]; – Vulkan

+0

但'.com.gr'不是TLD--'.gr'。 –

回答

1

獲取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!

+0

這不適用於「.com.gr」或由多個由點分隔的組件組成的任何其他TLD。附:你的名字聽起來很熟。 :) – Vulkan