2017-01-06 6 views
0

Zum Beispiel:Wie kann ich nur die TLD eines NSURL bekommen?

"http://www.youtube.com" -> ".com"

"http://www.google.com.gr" -> ".com.gr"

"https://made.in.china.chinesewebsite.닷컴" ->

"닷컴."

Der Host einer URL ist eine Sackgasse.

NSURL *URL; 

[URL host]; 
+0

http://stackoverflow.com/questions/20430620/is-it-possible-to-just-get-the-domain-und-tld-from-an-nsurl-no-www-or-anyanything –

+0

Die Die Antwort ist selbstverständlich, dass Sie wissen, wonach Sie suchen und einen Vergleich durchführt. Es funktioniert für diese [URL isFromWebsite: "youtube.com"] sowie diese [URL isFromWebsite: ". Com"]; – Vulkan

+0

Aber '.com.gr' ist nicht die TLD--' .gr' ist. –

Antwort

1

den Host der URL holen, brechen sie am . Begrenzer auf, und die letzte Komponente nehmen.

- (NSString *) tldOfURL: NSURL *theURL; { 
    NSString *host = theURL.host; 
    NSArray *parts = [host componentsSeparatedByString: @"."]; 
    if parts.count < 2 { 
    return nil; 
    } 
    return parts.lastObject; 
} 

Zuerst war meine Antwort NSURLComponents, wie in den meisten Fällen, dass die Klasse macht die ganze schwere Arbeit für Sie zu verwenden, aber es sieht aus wie es keinen Mechanismus, um die TLD hat zum Extrahieren.

Beachten Sie, dass obiges Nil zurückgibt, wenn der Hostname nicht mindestens einen Punkt enthält (.) und eine leere Zeichenfolge zurückgibt, wenn der Host mit einem Punkt endet. Beide Fälle sollten als Fehler behandelt werden.

P.S. Ich werde bei Objective-C Syntax rostig. Kaum zu glauben, wie viele Jahre ich damit verbracht habe, Objective-C zu schreiben!

+0

Dies funktioniert nicht für ".com.gr" oder eine andere TLD, die aus mehreren durch einen Punkt getrennten Komponenten besteht. P.S. Dein Name kommt mir bekannt vor. :) – Vulkan

Verwandte Themen