Cocoa touch 获取URL字符串的域部分?
我有一个带有URL的NSString,如下所示:Cocoa touch 获取URL字符串的域部分?,cocoa-touch,ios,ios4,Cocoa Touch,Ios,Ios4,我有一个带有URL的NSString,如下所示: http://someurl.com/something 如何仅获取someurl.com? 我已经尝试了substringToIndex,但没有成功:( 提前感谢:)使用 [[NSURL URLWithString:@"http://someurl.com/something"] host] 目标-C NSString* urlString = @"http://someurl.com/something"; NSURL* url = [N
http://someurl.com/something
如何仅获取someurl.com
?
我已经尝试了substringToIndex
,但没有成功:(
提前感谢:)使用
[[NSURL URLWithString:@"http://someurl.com/something"] host]
目标-C
NSString* urlString = @"http://someurl.com/something";
NSURL* url = [NSURL URLWithString:urlString];
NSString* domain = [url host];
Swift 2
var urlString = "http://someurl.com/something"
var url = NSURL(string: urlString)
var domain = url?.host
Swift 3+
var urlString = "http://someurl.com/something"
var url = URL(string: urlString)
var domain = url?.host
您应该查看该类的方法。Swift 4 如果您正在使用自定义url方案则表示深度链接,例如:
myapp:homescreen
(并且没有“主机名前斜杠”(//www.bbc)),一个对我来说有效的提取“主屏幕”的解决方案是使用下面的index方法,然后使用模式匹配来刮除之后的所有内容:“
url.host
或absoluteURL.host
在本场景中为nil
Swift 4.2
var urlString = "http://someurl.com/something"
var url = NSURL(string: urlString)
var domain = url?.host
我为URL编写了扩展以获取SLD。看来,有n
extension URL {
/// second-level domain [SLD]
///
/// i.e. `msk.ru, spb.ru`
var SLD: String? {
return host?.components(separatedBy: ".").suffix(2).joined(separator: ".")
}
}
差不多了,但一开始就留下了额外的www.
是的,因为那是主机名的一部分。你错了。例如,阅读以下内容:简而言之:http://www.pcwebopedia.com/index.html
->pcwebopedia.com
Wikipedia说“在DNS中注册的任何名称都是域名。”好的。但是wiki的理念是,每个人都可以在任何时候写他想要的任何东西,而无需付出额外的努力和后果。所以我不考虑它的数据。