获取包含在NSString中的文件的扩展名

我有一个NSMutable字典,包含文件ID和它们的文件名+扩展名为fileone.doc或filetwo.pdf的简单forms。 我需要确定什么types的文件是正确显示在我的UITableView相关的图标。 这是我迄今为止所做的。

NSString *docInfo = [NSString stringWithFormat:@"%d", indexPath.row]; //Determine what cell we are formatting NSString *fileType = [contentFiles objectForKey:docInfo]; //Store the file name in a string 

我写了两个正则expression式来确定我正在看什么types的文件,但他们从来没有返回一个积极的结果。 我之前没有在iOS编程中使用过正则expression式,所以我不完全确定是否正确,但是我基本上从Class Description页面复制了代码。

  NSError *error = NULL; NSRegularExpression *regexPDF = [NSRegularExpression regularExpressionWithPattern:@"/^.*\\.pdf$/" options:NSRegularExpressionCaseInsensitive error:&error]; NSRegularExpression *regexDOC = [NSRegularExpression regularExpressionWithPattern:@"/^.*\\.(doc|docx)$/" options:NSRegularExpressionCaseInsensitive error:&error]; NSUInteger numMatch = [regexPDF numberOfMatchesInString:fileType options:0 range:NSMakeRange(0, [fileType length])]; NSLog(@"How many matches were found? %@", numMatch); 

我的问题是,有没有更简单的方法来做到这一点? 如果不是,我的正则expression式是不正确的? 最后,如果我不得不使用这个,运行时间是否昂贵? 我不知道用户将有多less文件的平均数量。

谢谢。

你正在寻找[fileType pathExtension]

NSString文档:pathExtension

 //NSURL *url = [NSURL URLWithString: fileType]; NSLog(@"extension: %@", [fileType pathExtension]); 

编辑你可以在NSString上使用pathExtension

感谢David Barry

尝试使用[fileType pathExtension]来获取文件的扩展名。

尝试这个 :

 NSString *fileName = @"resume.doc"; NSString *ext = [fileName pathExtension]; 

在Swift 3中,你可以使用扩展:

 extension String { public func getExtension() -> String? { let ext = (self as NSString).pathExtension if ext.isEmpty { return nil } return ext } } 

试试这个,对我有用。

 NSString *fileName = @"yourFileName.pdf"; NSString *ext = [fileName pathExtension]; 

这里是NSString pathExtension的文档