2012-02-11 13 views
48

ファイルidとそのファイル名+拡張子を含むNSMutable辞書には、fileone.docまたはfiletwo.pdfという単純な形式で格納されています。自分のUITableViewに関連するアイコンを正しく表示するには、どのタイプのファイルであるかを判断する必要があります。これまで私が行ってきたことがあります。NSStringに含まれるファイルの拡張子を取得

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

私の質問には、これを行う簡単な方法がありますか?そうでなければ、私の正規表現は間違っていますか?最後に、これを使用する必要がある場合は、実行時間がかかりますか?私はユーザーが持っているファイルの平均量が何であるか分からない。

ありがとうございます。

答えて

143

おかげでに[たfileType pathExtension]を使用してみてくださいNSStringの上pathExtensionを使用することができますファイルの拡張子を取得します。

extension String { 

public func getExtension() -> String? { 

     let ext = (self as NSString).pathExtension 

     if ext.isEmpty { 
      return nil 
     } 

     return ext 
    } 
} 
+1

ああ、NSStringに 'pathExtension'プロパティがあることを知らなかった – remy

+4

Objective-Cは物事を簡単にするだけです。私はそのような難しい解決策を考えないといけない! Davidに感謝します。 – TheJer

+3

私はうまくいきませんでした。自分自身でこの機能を試してみました。 – Will

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

編集あなたは[fileType pathExtension]

NSString Documentation: pathExtension

+0

はこちらドキュメントあなたは、文字列の上に直接最初のNSURLを作成する必要がpathExtensionを呼び出すことはできません。 –

+3

なぜあなたはちょうど上記の答えを裂いて、彼に信用を与えたのですか? –

3

を探しているデビッド・バリー

4

はこれを試してみてください。

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

NSString pathExtension

0

が、それは私の作品、これを試してください:あなたが拡張機能を使用することができスウィフト3では

NSString *fileName = @"resume.doc"; 
NSString *ext = [fileName pathExtension]; 
関連する問題