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

pme*_*ino 19 cocoa-touch ios4 ios

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

http://someurl.com/something
Run Code Online (Sandbox Code Playgroud)

我怎么才能得到someurl.com?我已经尝试substringToIndex过没有运气:(

提前致谢 :)

Ste*_*ton 68

Objective-C的

NSString* urlString = @"http://someurl.com/something";
NSURL* url = [NSURL URLWithString:urlString];
NSString* domain = [url host];
Run Code Online (Sandbox Code Playgroud)

斯威夫特2

var urlString = "http://someurl.com/something"
var url = NSURL(string: urlString)
var domain = url?.host
Run Code Online (Sandbox Code Playgroud)

Swift 3+

var urlString = "http://someurl.com/something"
var url = URL(string: urlString)
var domain = url?.host
Run Code Online (Sandbox Code Playgroud)

  • 几乎只是在开头留下了额外的"www." (4认同)
  • 是的,因为那是主机名的一部分. (3认同)
  • 维基百科说:“在DNS中注册的任何名称都是域名。” (2认同)

Dee*_*olu 11

使用

[[NSURL URLWithString:@"http://someurl.com/something"] host]
Run Code Online (Sandbox Code Playgroud)


Ale*_*nko 6

斯威夫特 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: ".")
    }
}
Run Code Online (Sandbox Code Playgroud)