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

时间:2012-02-11 23:52:17

标签: iphone objective-c regex ios5 nsstring

我有一个NSMutable字典,它以fileone.doc或filetwo.pdf的简单形式包含文件ID及其文件名+扩展名。我需要确定在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

我写了两个正则表达式来确定我正在查看的文件类型,但它们永远不会返回正面结果。我以前没有在iOS编程中使用正则表达式,所以我不确定我是否正确,但我基本上复制了类描述页面中的代码。

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

我的问题是,有更简单的方法吗?如果没有,我的正则表达式是不正确的?最后,如果我必须使用它,运行时间是否昂贵?我不知道用户的平均文件数量是多少。

谢谢。

6 个答案:

答案 0 :(得分:147)

您正在寻找[fileType pathExtension]

NSString Documentation: pathExtension

答案 1 :(得分:7)

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

编辑您可以在NSString上使用pathExtension

感谢David Barry

答案 2 :(得分:4)

试试这个:

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

答案 3 :(得分:3)

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

答案 4 :(得分:0)

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

extension String {

public func getExtension() -> String? {

        let ext = (self as NSString).pathExtension

        if ext.isEmpty {
            return nil
        }

        return ext
    }
}

答案 5 :(得分:0)

试试这个,它对我有用。

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

NSString pathExtension

的文档