Soru NSString'de bulunan bir dosyanın uzantısını edinin.


Dosya kimliklerini ve dosya adlarını + uzantılarını fileone.doc veya filetwo.pdf biçiminde içeren bir NSMutable sözlüğüm var. UITableView'imde ilgili bir simgenin doğru bir şekilde görüntülenmesi için hangi dosya türünü belirlemem gerekiyor. Şimdiye kadar yaptığım işte.

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

Baktığım dosya türünü belirlemek için iki düzenli ifade yazdım, ama asla olumlu bir sonuç vermediler. Daha önce iOS programında regex kullanmamıştım, bu yüzden doğru yaptığımdan tam olarak emin değilim, ancak temel olarak Class Description sayfasından kodu kopyaladım.

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

Sorularım olurdu, bunu yapmanın daha kolay bir yolu var mı? Değilse, regex'im yanlış mı? Ve sonunda bunu kullanmam gerekirse, çalışma zamanında maliyetli midir? Bir kullanıcının sahip olacağı ortalama dosya miktarının ne olduğunu bilmiyorum.

Teşekkür ederim.


50
2018-02-11 23:52


Menşei




Cevaplar:


Arıyorsun [fileType pathExtension]

NSString Belgeleri: pathExtension


146
2018-02-11 23:59



Oh, NSString’in pathExtension özellik - remy
Amaç-C sadece işleri çok kolaylaştırır; Bu kadar zor çözümleri düşünmem gerek! Teşekkür ederim David. - TheJer
Bu işlevi kendim denemedim ve sevinmedim - Will


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

Düzenle NSString'de pathExtension özelliğini kullanabilirsiniz

David Barry'ye teşekkürler


6
2018-02-11 23:57



PathExtension'ı doğrudan String üzerinde arayabilir, önce bir NSURL oluşturmanıza gerek yoktur. - David Barry
Neden sadece yukarıdaki cevabı yırttın ve sonra ona borç verdin? - Adam Waite


Bunu dene :

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

4
2018-02-04 12:09





Dosyanın uzantısını almak için [fileType pathExtension] kullanmayı deneyin.


3
2018-02-12 00:00





Swift 3'te bir uzantı kullanabilirsiniz:

extension String {

public func getExtension() -> String? {

        let ext = (self as NSString).pathExtension

        if ext.isEmpty {
            return nil
        }

        return ext
    }
}

0
2018-01-10 18:12





Bunu dene, benim için çalışıyor.

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

Belgeler burada için NSString pathExtension 


0
2018-03-31 19:54