114

値が

http://digg.com/news/business/24hr

第3レベルの前にすべてを取得するにはどうすればよいですか?

http://digg.com/news/
4

2 に答える 2

438

これは正確に第3レベルではありません、気をつけてください。URLは次のように分割されます。

  • プロトコルまたはスキーム(ここでは、http
  • 区切り://文字
  • ユーザー名とパスワード(ここにはありませんが、可能性がありますusername:password@hostname
  • ホスト名(ここでは、digg.com
  • ポート(:80たとえば、ドメイン名の後になります)
  • パス(ここでは、/news/business/24hr
  • パラメータ文字列(セミコロンに続くもの)
  • クエリ文字列(次のようなGETパラメータがある場合?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]=ニケート
  • -[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-ここ
  • -[NSURL query]= foo = bar
  • -[NSURL fragment]=バズ

ただし、必要なのは次のようなものです。

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の要素が必要になります。他のスラッシュは破棄されます。)

于 2010-09-11T22:59:55.240 に答える
7

Playground、言語の迅速さを使用して、私はこれを手に入れました! Playgroundは、これが実際に動作していることをインタラクティブに確認する方法を提供します。iOSで重要なトピックであるNSURLを学ぶための、同じ楽しい方法を楽しんでいただければ幸いです。

于 2016-11-30T05:53:16.720 に答える