回答:
これは第3レベルではありません。URLはそのように分割されます。
http)://デリミタusername:password@hostname)digg.com):80たとえば、ドメイン名の後にあります)/news/business/24hr)?foo=bar&baz=frob)#foobar)「フル機能」のURLは次のようになります。
http://foobar:nicate@example.com:8080/some/path/file.html;params-here?foo=bar#baz
NSURL幅広いアクセサがあります。NSURLクラスのドキュメントのセクション「URLの各部分へのアクセス」で確認できます。クイックリファレンス:
-[NSURL scheme] = http-[NSURL resourceSpecifier] =(//からURLの末尾までのすべて)-[NSURL user] = foobar-[NSURL password] = nicate-[NSURL host] = example.com-[NSURL port] = 8080-[NSURL path] = /some/path/file.html-[NSURL pathComponents] = @ ["/"、 "some"、 "path"、 "file.html"](最初の/はその一部であることに注意してください)-[NSURL lastPathComponent] = file.html-[NSURL pathExtension] = html-[NSURL parameterString] = params-here-[NSURL query] = foo = bar-[NSURL fragment] = bazしかし、あなたが望むのはそのようなものです:
NSURL* url = [NSURL URLWithString:@"http://digg.com/news/business/24hr"];
NSString* reducedUrl = [NSString stringWithFormat:
@"%@://%@/%@",
url.scheme,
url.host,
url.pathComponents[1]];
URLの例では、必要なのはプロトコル、ホスト、および最初のパスコンポーネントです。(によって返される配列のインデックス0の要素-[NSString pathComponents]は単に "/"なので、インデックス1の要素が必要になります。他のスラッシュは破棄されます。)
file.htmlは、は箇条書きにリストされていません-パスからクエリ文字列にジャンプしています...
[url.pathComponents objectAtIndex:1]インデックスの代わりに取得する必要があります。これ0により、この回答のコードが出力されますhttp://digg.com//