我想从像这样的字符串中提取文件的名称
C:\IBM\...\images\custom\fileName.png
但是
[string lastPathComponent];
给我整个字符串而不是fileName.png。我在这里做错了什么?
答案 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];
当然这应该正确检查字符串实际上是否有反斜杠。
仅供参考 - 如果在一个或几个字符串上完成并不重要,但这种方法比其他答案更有效,因为这种方法不会不必要地处理整个字符串或创建额外的副本。