webentwicklung-frage-antwort-db.com.de

Ruft die Erweiterung einer in einem NSString enthaltenen Datei ab

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.

52
TheJer

Du schaust nach [fileType pathExtension]

NSString-Dokumentation: pathExtension

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

Bearbeiten Sie können pathExtension für NSString verwenden

Vielen Dank an David Barry

7
remy

Versuche dies :

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

Versuchen Sie, mit [fileType pathExtension] die Dateierweiterung abzurufen.

3
Eric

Probieren Sie es aus, es funktioniert bei mir.

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

Dokumentation hier für NSString pathExtension

0
Ashu

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
    }
}
0
Domenico