web-dev-qa-db-ja.com

Objective-C:パス文字列からファイル名を抽出する

/Users/user/Projects/thefile.extを含むNSStringがある場合、Objective-Cメソッドを使用してthefileを抽出します。

それを行う最も簡単な方法は何ですか?

251
Anton

NSStringリファレンス から取得したものを使用できます:

NSString *theFileName = [[string lastPathComponent] stringByDeletingPathExtension];

lastPathComponent呼び出しはthefile.extを返し、stringByDeletingPathExtensionは拡張サフィックスを末尾から削除します。

598
Peter

ユーザーが読み取り可能なファイル名を表示している場合は、notlastPathComponentを使用します。代わりに、NSFileManagerのdisplayNameAtPath:メソッドにフルパスを渡します。これは基本的に同じことを行いますが、ファイル名を正しくローカライズし、ユーザーの設定に基づいて拡張子を削除するだけです。

37

何年も遅れて話題にならないというリスクがあり、@ Marcの優れた洞察にもかかわらず、Swiftでは次のようになります。

let basename = NSURL(string: "path/to/file.ext")?.URLByDeletingPathExtension?.lastPathComponent
3
Chris Conover