获取URL字符串的域名部分?

时间:2011-05-28 15:19:49

标签: cocoa-touch ios ios4

我有一个带有URL的NSString,就这样:

http://someurl.com/something

我如何才能获得someurl.com? 我已经尝试substringToIndex而没有运气:(

提前致谢:)

5 个答案:

答案 0 :(得分:66)

<强>目标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

答案 1 :(得分:10)

使用

[[NSURL URLWithString:@"http://someurl.com/something"] host]

答案 2 :(得分:1)

您应该查看host()类的NSURL方法。

答案 3 :(得分:1)

Swift 4.2

我写了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: ".")
    }
}

答案 4 :(得分:0)

Swift 4

如果您使用自定义网址说深层链接,例如:

myapp:homescreen

(并且没有&#34;带有主机名的正斜杠&#34;(//www.bbc)),这个解决方案对我有用,可以提取&#34;主屏幕&#34;是using the index方法,然后pattern matching":"

之后删除所有内容
let index = absoluteString.index(absoluteString.startIndex, offsetBy: 5)
String(absoluteString[index...])
此方案中

url.hostabsoluteURL.host nil