Objective-C/Cocoa中类似Python的os.path.split()获取目录名和文件名的方法

4 投票
3 回答
1909 浏览
提问于 2025-04-16 12:39

当我有一个路径时,我可以在Python中使用os.path.split()来获取目录名和文件名。

>>> x = '/a/b/c/hello.txt'
>>> import os.path
>>> os.path.split(x)
('/a/b/c', 'hello.txt')

在Objective-C或Cocoa中,有什么类似的函数呢?

3 个回答

0

NSString 有一个方法叫做 (NSArray *)pathComponents

4
NSString *a = @"/a/b/c/hello.txt";
NSArray *path = [a pathComponents];
NSArray *startOfPath = [path subarrayWithRange:NSMakeRange(0, [path count]-2)];
[NSString pathWithComponents:startOfPath]; // /a/b/c
[a lastPathComponent]; // hello.txt

当然可以!不过你没有提供具体的内容,我无法进行翻译。如果你能把想要翻译的内容发给我,我会很乐意帮你把它变得更简单易懂。

3

其实有个更简单的方法(比起处理子数组来说);你可以看看 NSPathUtilities.h 这个文件。

- (NSString *)lastPathComponent;
- (NSString *)stringByDeletingLastPathComponent;
- (NSString *)stringByAppendingPathComponent:(NSString *)str;

- (NSString *)pathExtension;
- (NSString *)stringByDeletingPathExtension;
- (NSString *)stringByAppendingPathExtension:(NSString *)str;

- (NSArray *)stringsByAppendingPaths:(NSArray *)paths;

以 "/a/b/c/hello.txt" 这个例子为例:

 NSString *path = @"/a/b/c/hello.txt";

 NSString *fileName = [path lastPathComponent];
  // 'hello.txt'

 NSString *basePath = [path stringByDeletingLastPathComponent];
  // '/a/b/c'

 NSString *newPath = [basePath stringByAppendingPathComponent:@"goodbye.txt"];
  // '/a/b/c/goodbye.txt'

还有其他的类似方法...

撰写回答