Khi tôi có NSString
với /Users/user/Projects/thefile.ext
Tôi muốn trích xuất thefile
với các phương pháp Mục tiêu-C.Mục tiêu-C: Trích xuất tên tệp từ chuỗi đường dẫn
Cách dễ nhất để làm điều đó là gì?
Khi tôi có NSString
với /Users/user/Projects/thefile.ext
Tôi muốn trích xuất thefile
với các phương pháp Mục tiêu-C.Mục tiêu-C: Trích xuất tên tệp từ chuỗi đường dẫn
Cách dễ nhất để làm điều đó là gì?
Taken từ the NSString reference, bạn có thể sử dụng:
NSString *theFileName = [[string lastPathComponent] stringByDeletingPathExtension];
Cuộc gọi lastPathComponent
sẽ trở lại thefile.ext
, và stringByDeletingPathExtension
sẽ loại bỏ các suffic mở rộng từ kết thúc.
OMG! Cảm ơn bạn, cảm ơn bạn, cảm ơn bạn! – Anton
Tôi chưa bao giờ nghe nói về 'lastPathComponent'. Cảm ơn bạn! – Dimitris
Một giải pháp khác sẽ là sự kết hợp của câu trả lời này và câu trả lời của Marc: '[[[NSFileManager defaultManager] displayNameAtPath: path] stringByDeletingPathExtension]' (sử dụng bất kỳ trình quản lý tệp nào bạn muốn). Điều này đảm bảo tên tệp được bản địa hóa chính xác và tiện ích mở rộng đã bị xóa. – willurd
Nếu bạn đang hiển thị tên tệp có thể đọc được, bạn hãy không muốn sử dụng lastPathComponent
. Thay vào đó, chuyển đường dẫn đầy đủ tới phương thức displayNameAtPath:
của NSFileManager. Điều này về cơ bản không làm điều tương tự, chỉ có nó địa phương hóa một cách chính xác tên tập tin và loại bỏ phần mở rộng dựa trên sở thích của người dùng.
Đối với nhóm, bạn có thể muốn sử dụng [[[NSBundle bundleWithPath: pref] localizedInfoDictionary] objectForKey: @ "CFBundleName"] để thay thế. displayNameAtPath bao gồm phần mở rộng trong đó mã này trả về tên được bản địa hoá. –
Đừng quên kiểm tra CFBundleDisplayName trước. –
Tại nguy cơ bị năm cuối và tắt chủ đề - và mặc dù @ cái nhìn sâu sắc tuyệt vời của Marc, trong Swift nó trông giống như:
let basename = NSURL(string: "path/to/file.ext")?.URLByDeletingPathExtension?.lastPathComponent
[đường dẫn lastPathComponent] hoặc [[đường dẫn pathComponents] lastObject]. Cả hai đều cho 'thefile.ext'. Có phương thức [path pathExtension] để lấy 'ext' nhưng không giống với tên tệp. – Anton