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.
Vous cherchez [fileType pathExtension]
//NSURL *url = [NSURL URLWithString: fileType];
NSLog(@"extension: %@", [fileType pathExtension]);
Edit vous pouvez utiliser pathExtension sur NSString
Merci à David Barry
Essaye ça :
NSString *fileName = @"resume.doc";
NSString *ext = [fileName pathExtension];
Essayez d'utiliser [fileType pathExtension] pour obtenir l'extension du fichier.
Essayez ça, ça marche pour moi.
NSString *fileName = @"yourFileName.pdf";
NSString *ext = [fileName pathExtension];
Documentation ici pour NSString pathExtension
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
}
}