web-dev-qa-db-ja.com

NSStringに含まれるファイルの拡張子を取得します

Fileone.docまたはfiletwo.pdfの単純な形式のファイルIDとファイル名+拡張子を含むNSMutable辞書があります。 UITableViewに関連アイコンを正しく表示するには、どのタイプのファイルかを判断する必要があります。これが私がこれまでにしたことです。

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

探しているファイルの種類を判断するために2つの正規表現を作成しましたが、肯定的な結果が返されることはありません。私は以前にiOSプログラミングで正規表現を使用したことがないので、正しく実行しているかどうかは完全にはわかりませんが、基本的にはクラスの説明ページからコードをコピーしました。

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

私の質問は、これを行う簡単な方法はありますか?そうでない場合、正規表現は間違っていますか?最後に、これを使用する必要がある場合、実行時にコストがかかりますか?ユーザーが所有するファイルの平均量がどうなるかはわかりません。

ありがとうございました。

52
TheJer

あなたが探しています [fileType pathExtension]

NSStringドキュメント:pathExtension

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

編集 NSStringでpathExtensionを使用できます

デビッド・バリーに感謝

7
remy

これを試して :

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

[fileType pathExtension]を使用して、ファイルの拡張子を取得してみてください。

3
Eric

これを試してください、それは私のために動作します。

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

NSString pathExtension のドキュメントはこちら

0
Ashu

Swift 3では、拡張機能を使用できます:

extension String {

public func getExtension() -> String? {

        let ext = (self as NSString).pathExtension

        if ext.isEmpty {
            return nil
        }

        return ext
    }
}
0
Domenico