NSStringの値があります
http://digg.com/news/business/24hr
第3レベルの前にすべてを入手するにはどうすればよいですか?
http://digg.com/news/
これはまさに第3レベルではありません。 URLはそのように分割されます:
http
)://
区切り文字username:password@hostname
の可能性があります)digg.com
):80
になります)/news/business/24hr
)?foo=bar&baz=frob
などのGETパラメーターがある場合)#foobar
のようなリンクにアンカーがあった場合).「完全な機能を備えた」URLは次のようになります。
http://foobar:[email protected]: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の場合、必要なのはプロトコル、ホスト、および最初のパスコンポーネントです。 (-[NSString pathComponents]
によって返される配列のインデックス0の要素は単に「/」なので、インデックス1の要素が必要になります。他のスラッシュは破棄されます。)