Get the domain part of an URL string?
I have an NSString with an URL, in this way:
http://someurl.com/something
How would I get someurl.开发者_运维技巧com
only?
I've already tried substringToIndex
with no luck :(
Thanks in advance :)
Objective-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
Use
[[NSURL URLWithString:@"http://someurl.com/something"] host]
Swift 4.2
I wrote extension for URL to take SLD. Seems, there is n
extension URL {
/// second-level domain [SLD]
///
/// i.e. `msk.ru, spb.ru`
var SLD: String? {
return host?.components(separatedBy: ".").suffix(2).joined(separator: ".")
}
}
Swift 5
Extension to string, that gives you the domain name, while also removing "www."
extension String {
func StripURLMakeAttractive(_ url: String) -> String {
let url = URL(string: url)
guard let domain = url?.host else {return "error"}
var modifiedDomain: String = ""
var checkWWW: String = ""
let checkIndexes = [0,1,2,3]
for (index,char) in domain.enumerated() {
if checkIndexes.contains(index){
checkWWW.append(char)
}
if index > 3 && checkWWW.lowercased() == "www." {
modifiedDomain.append(char)
}
}
if checkWWW.lowercased() == "www."{
return modifiedDomain
}
else {
return domain
}
}
}
You should look at the host() method of the NSURL class.
Swift 5.5
extension String {
var onlyHost: String? {
let url = URL(string: self)
return url?.host
}
}
Swift 4
And if you are using Custom url schemes say for deeplinking, for eg:
myapp:homescreen
(and don't have the "forward slashes with host name" (//www.bbc)), one solution that worked for me to extract "homescreen" is by using the index
method below and then pattern matching
to scrape everything after ":"
let index = absoluteString.index(absoluteString.startIndex, offsetBy: 5)
String(absoluteString[index...])
url.host
or absoluteURL.host
is nil
in this scenario
精彩评论