Ios [string lastPathComponent]出现问题

Ios [string lastPathComponent]出现问题,ios,nsstring,Ios,Nsstring,我想从如下字符串中提取文件名 C:\IBM\...\images\custom\fileName.png 但是 给我整个字符串,而不是fileName.png。我在这里做错了什么?我相信lastPathComponent基于正斜杠“/”进行拆分,您的路径只包含反斜杠“\” 您可以尝试替换反斜杠: [path stringByReplacingOccurrencesOfString:@"\\" withString:@"/"].lastPathComponent; 我相信lastPathCom

我想从如下字符串中提取文件名

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


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

我相信
lastPathComponent
基于正斜杠“/”进行拆分,您的路径只包含反斜杠“\”

您可以尝试替换反斜杠:

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

我相信
lastPathComponent
是基于正斜杠“/”分割的,您的路径只包含反斜杠“\”

您可以尝试替换反斜杠:

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

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

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

只要字符串不是空字符串或nil字符串,这就可以工作

除了michaels答案,您还可以执行以下操作

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

只要字符串不是空字符串或nil字符串,这就可以工作

和其他精细答案的另一种选择:

NSString *path = @"C:\IBM\...\images\custom\fileName.png";
NSRange backslashRange = [path rangeOfString:@"\\" options:NSBackwardsSearch];
NSString *filename = [path substringFromIndex:backslashRange.location + 1];
当然,这应该有一个适当的检查字符串实际上有一个反斜杠


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

和其他精细答案的另一种替代方法:

NSString *path = @"C:\IBM\...\images\custom\fileName.png";
NSRange backslashRange = [path rangeOfString:@"\\" options:NSBackwardsSearch];
NSString *filename = [path substringFromIndex:backslashRange.location + 1];
当然,这应该有一个适当的检查字符串实际上有一个反斜杠


仅供参考-在一个或几个字符串上执行并不重要,但这种方法比其他方法更有效,因为这种方法不需要处理整个字符串或创建额外的副本。

哇,我是瞎子。很好!谢谢,我是瞎子。很好!感谢所有想知道的人,这里提到的支票是反斜杠range.location!=NSNotFound IIRC。我们所有的答案都假设原始海报确保字符串实际上是他正在寻找的路径。对于任何想知道的人,所提到的检查是backslashRange.location!=NSNotFound IIRC。我们所有的答案都假设原始海报确保了字符串实际上就是他要寻找的路径。