问题[string lastPathComponent]

时间:2014-05-06 23:36:13

标签: ios nsstring

我想从像这样的字符串中提取文件的名称

C:\IBM\...\images\custom\fileName.png

但是

[string lastPathComponent];

给我整个字符串而不是fileName.png。我在这里做错了什么?

3 个答案:

答案 0 :(得分:3)

我相信lastPathComponent基于正斜杠" /"分裂,您的路径只包含反斜杠" \"

您可以尝试更换反斜杠:

[path stringByReplacingOccurrencesOfString:@"\\" withString:@"/"].lastPathComponent;

答案 1 :(得分:1)

除了michaels的回答,您还可以执行以下操作。

NSArray *listItems = [string componentsSeparatedByString:@"\\"];
NSString *endOfString = [listItems lastObject];    

只要字符串不是空字符串或nil字符串,这将起作用。

答案 2 :(得分:1)

另外一个替代其他好的答案:

NSString *path = @"C:\IBM\...\images\custom\fileName.png";
NSRange backslashRange = [path rangeOfString:@"\\" options:NSBackwardsSearch];
NSString *filename = [path substringFromIndex:backslashRange.location + 1];

当然这应该正确检查字符串实际上是否有反斜杠。

仅供参考 - 如果在一个或几个字符串上完成并不重要,但这种方法比其他答案更有效,因为这种方法不会不必要地处理整个字符串或创建额外的副本。