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);
私の質問は、これを行う簡単な方法はありますか?そうでない場合、正規表現は間違っていますか?最後に、これを使用する必要がある場合、実行時にコストがかかりますか?ユーザーが所有するファイルの平均量がどうなるかはわかりません。
ありがとうございました。
あなたが探しています [fileType pathExtension]
//NSURL *url = [NSURL URLWithString: fileType];
NSLog(@"extension: %@", [fileType pathExtension]);
編集 NSStringでpathExtensionを使用できます
デビッド・バリーに感謝
これを試して :
NSString *fileName = @"resume.doc";
NSString *ext = [fileName pathExtension];
[fileType pathExtension]を使用して、ファイルの拡張子を取得してみてください。
これを試してください、それは私のために動作します。
NSString *fileName = @"yourFileName.pdf";
NSString *ext = [fileName pathExtension];
NSString pathExtension のドキュメントはこちら
Swift 3では、拡張機能を使用できます:
extension String {
public func getExtension() -> String? {
let ext = (self as NSString).pathExtension
if ext.isEmpty {
return nil
}
return ext
}
}