Ich habe ein NSMutable-Wörterbuch, das Datei-IDs und deren Dateinamen + Erweiterung in der einfachen Form fileone.doc oder filetwo.pdf enthält. Ich muss bestimmen, um welchen Dateityp es sich handelt, um ein zugehöriges Symbol in UITableView korrekt anzuzeigen. Folgendes habe ich bisher getan.
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
Ich habe zwei reguläre Ausdrücke geschrieben, um zu bestimmen, welchen Dateityp ich betrachte, aber sie liefern niemals ein positives Ergebnis. Ich habe noch nie zuvor Regex in der iOS-Programmierung verwendet, daher bin ich mir nicht ganz sicher, ob ich es richtig mache, aber ich habe den Code im Grunde genommen von der Klassenbeschreibungsseite kopiert.
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);
Meine Fragen wären, gibt es einen einfacheren Weg, dies zu tun? Wenn nicht, ist mein regulärer Ausdruck nicht korrekt? Und schließlich, wenn ich das verwenden muss, ist es in der Laufzeit teuer? Ich weiß nicht, wie viele Dateien ein Benutzer durchschnittlich haben wird.
Vielen Dank.
Du schaust nach [fileType pathExtension]
//NSURL *url = [NSURL URLWithString: fileType];
NSLog(@"extension: %@", [fileType pathExtension]);
Bearbeiten Sie können pathExtension für NSString verwenden
Vielen Dank an David Barry
Versuche dies :
NSString *fileName = @"resume.doc";
NSString *ext = [fileName pathExtension];
Versuchen Sie, mit [fileType pathExtension] die Dateierweiterung abzurufen.
Probieren Sie es aus, es funktioniert bei mir.
NSString *fileName = @"yourFileName.pdf";
NSString *ext = [fileName pathExtension];
Dokumentation hier für NSString pathExtension
In Swift 3 könnten Sie eine Erweiterung verwenden:
extension String {
public func getExtension() -> String? {
let ext = (self as NSString).pathExtension
if ext.isEmpty {
return nil
}
return ext
}
}