Получить расширение файла, содержащегося в NSString - программирование
Подтвердить что ты не робот

Получить расширение файла, содержащегося в NSString

У меня есть словарь NSMutable, который содержит идентификаторы файлов и их имя файла + расширение в простой форме fileone.doc или filetwo.pdf. Мне нужно определить, какой тип файла должен правильно отображать соответствующий значок в моем 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

Я написал два регулярных выражения, чтобы определить, какой тип файла я ищу, но они никогда не возвращают положительный результат. Я раньше не использовал regex в 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);

Мои вопросы были бы, есть ли более простой способ сделать это? Если нет, неправильно ли мое регулярное выражение? И, наконец, если я должен использовать это, это дорого стоит во время выполнения? Я не знаю, какое среднее количество файлов будет иметь пользователь.

Спасибо.

4b9b3361

Ответ 2

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

Изменить вы можете использовать pathExtension в NSString

Благодаря Дэвиду Барри

Ответ 3

Попробуйте использовать [fileType pathExtension], чтобы получить расширение файла.

Ответ 4

Попробуйте следующее:

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

Ответ 5

В Swift 3 вы можете использовать расширение:

extension String {

public func getExtension() -> String? {

        let ext = (self as NSString).pathExtension

        if ext.isEmpty {
            return nil
        }

        return ext
    }
}

Ответ 6

Попробуй, это работает для меня.

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

Документация для NSString pathExtension