web-dev-qa-db-fra.com

Obtenir l'extension d'un fichier contenu dans une NSString

J'ai un dictionnaire NSMutable qui contient les ID de fichier et leur nom de fichier + extension sous la forme simple de fileone.doc ou filetwo.pdf. Je dois déterminer de quel type de fichier il s'agit pour afficher correctement une icône associée dans mon UITableView. Voici ce que j'ai fait jusqu'à présent.

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

J'ai écrit deux expressions régulières pour déterminer le type de fichier que je regarde, mais elles ne retournent jamais de résultat positif. Je n'ai jamais utilisé l'expression régulière dans la programmation iOS, donc je ne suis pas entièrement sûr de bien faire les choses, mais j'ai essentiellement copié le code de la page Description de la classe.

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

Mes questions seraient, existe-t-il un moyen plus facile de le faire? Sinon, mon expression rationnelle est-elle incorrecte? Et enfin, si je dois l'utiliser, est-ce coûteux en temps d'exécution? Je ne sais pas quel sera le nombre moyen de fichiers qu'un utilisateur aura.

Merci.

52
TheJer

Vous cherchez [fileType pathExtension]

Documentation NSString: pathExtension

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

Edit vous pouvez utiliser pathExtension sur NSString

Merci à David Barry

7
remy

Essaye ça :

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

Essayez d'utiliser [fileType pathExtension] pour obtenir l'extension du fichier.

3
Eric

Essayez ça, ça marche pour moi.

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

Documentation ici pour NSString pathExtension

0
Ashu

Dans Swift 3, vous pouvez utiliser une extension:

extension String {

public func getExtension() -> String? {

        let ext = (self as NSString).pathExtension

        if ext.isEmpty {
            return nil
        }

        return ext
    }
}
0
Domenico