我有一个像这样的字符串:
NSArray *array = [path componentsSeparatedByString:@"\"];
我将字符串分成如下数组:
{
"_id" : "20minutos",
"active" : true,
"group" : "20 Minutos",
"domains" : [
"20minutos.com",
"20minutos.es",
"20minutos.tv"
]
现在我需要两件事。
除了eee.pdf
我需要数组中的最后一项作为字符串(eee.pdf)
我该怎么做?
答案 0 :(得分:2)
只是为了好玩,有一种鲜为人知的方法可以从Windows文件路径中获取NSURL
NSString *path = @"\\\\fake\\aaa\\bbb\\ccc\\ddd\\eee.pdf";
NSURL *url = CFBridgingRelease(CFURLCreateWithFileSystemPath(kCFAllocatorDefault, (CFStringRef)path, kCFURLWindowsPathStyle, false));
NSString *fileName = url.lastPathComponent;
NSString *parentDirectory = url.URLByDeletingLastPathComponent.path;
最后,您必须将parentDirectory
转换回Windows路径样式(反斜杠)。
但如果你的意思是OS X中使用的POSIX路径,那就更容易了
NSString *path = @"/fake/aaa/bbb/ccc/ddd/eee.pdf";
NSURL *url = [NSURL fileURLWithPath:path];
NSString *fileName = url.lastPathComponent;
NSString *parentDirectory = url.URLByDeletingLastPathComponent.path;
答案 1 :(得分:0)
对于最后一个元素,请使用lastObject
的{{1}}属性。
对于没有最后一个元素的字符串,使用NSArray
使用subarrayWithRange:
作为array.count-1
长度。
然后使用NSRange
加入剩余的数组。
componentsJoinedByString:
答案 2 :(得分:0)
我认为您正在尝试从完整路径获取文件路径和文件名。有更好的方法可以做到这一点。但既然你只是问了这个问题,这就是我的答案。请注意,这不是最好的方法。此外,您必须使用前面的反斜杠来转义反斜杠。
NSString *path = @"\\fake\\aaa\\bbb\\ccc\\ddd\\eee.pdf";
NSArray *array = [path componentsSeparatedByString:@"\\"];
NSMutableArray *removedArray = [[NSMutableArray alloc] init];
for(int i=0; i< array.count -1; i++){
[removedArray addObject:[array objectAtIndex:i]];
}
NSString *joinedString =[removedArray componentsJoinedByString:@"\\"];
NSString *fileName = [array lastObject];
NSLog(@"Path: %@", joinedString);
NSLog(@"Filename: %@", fileName);