Objective-C拆分字符串并获取最后一项

时间:2016-02-15 19:48:16

标签: objective-c

我有一个像这样的字符串:

 NSArray *array = [path componentsSeparatedByString:@"\"];

我将字符串分成如下数组:

{
    "_id" : "20minutos",
    "active" : true,
    "group" : "20 Minutos",
    "domains" : [
            "20minutos.com",
            "20minutos.es",
            "20minutos.tv"
    ]

现在我需要两件事。

  1. 除了eee.pdf

  2. ,我需要一个包含所有内容的字符串
  3. 我需要数组中的最后一项作为字符串(eee.pdf)

  4. 我该怎么做?

3 个答案:

答案 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);