“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'。 –