文字列に特定のサフィックスが付いているかどうかを確認したいのですが、大文字と小文字を区別しないチェックを行いたいと思います。これに代わるものが必要です:
if ([selectedFile hasSuffix:@"jpg"] ||
[selectedFile hasSuffix:@"JPG"])
またはjPg、jpG、Jpg。これを行うための短い方法はありますか?caseInsensitiveCompare:
この状況でどのように適用できるかわかりません。
文字列に特定のサフィックスが付いているかどうかを確認したいのですが、大文字と小文字を区別しないチェックを行いたいと思います。これに代わるものが必要です:
if ([selectedFile hasSuffix:@"jpg"] ||
[selectedFile hasSuffix:@"JPG"])
またはjPg、jpG、Jpg。これを行うための短い方法はありますか?caseInsensitiveCompare:
この状況でどのように適用できるかわかりません。
[[selectedFile lowercaseString] hasSuffix:@"jpg"]
がファイル名の場合selectedFile
は、拡張子全体を確認することをお勧めします。ThisIsNotAnImage.asdfjpgという名前のファイルが見つかる可能性は低いですが、可能性があります。接尾辞を確認するだけで、これは画像であると誤って結論付けられます。
幸いなことNSString
に、パスを操作するための多くの方法がありますpathExtension
。
また、常にJPEG画像のみを受け入れますか、それともロードできるすべての画像を受け入れますか?Appleの画像クラスのほとんどは、印象的な範囲のファイル形式をサポートしています。
iOS向けに作成している場合、によって認識される画像形式は、その拡張子とともにUIImageクラスリファレンスUIImage
に一覧表示されます。
Mac OS用に作成している場合はNSImage
、と呼ばれるクラスメソッドがimageFileTypes
あり、サポートされている形式を実行時に変更できます。
UIImageクラスリファレンスに記載されているように、JPEGファイルの拡張子は.jpegである場合があります。手動でJPEGを探している場合は、.jpgと.jpegの両方を確認する必要があります。
NSString *extension = [selectedFile pathExtension];
BOOL isJpegImage =
(([extension caseInsensitiveCompare:@"jpg"] == NSOrderedSame) ||
([extension caseInsensitiveCompare:@"jpeg"] == NSOrderedSame));
if (isJpegImage)
{
// Do image things here.
}
NSString *loweredExtension = [[selectedFile pathExtension] lowercaseString];
// Valid extensions may change. Check the UIImage class reference for the most up to date list.
NSSet *validImageExtensions = [NSSet setWithObjects:@"tif", @"tiff", @"jpg", @"jpeg", @"gif", @"png", @"bmp", @"bmpf", @"ico", @"cur", @"xbm", nil];
if ([validImageExtensions containsObject:loweredExtension])
{
// Do image things here.
}
NSString *loweredExtension = [[selectedFile pathExtension] lowercaseString];
NSSet *validImageExtensions = [NSSet setWithArray:[NSImage imageFileTypes]];
if ([validImageExtensions containsObject:loweredExtension])
{
// Do image things here.
}
mipadiの提案が最適ですが、あなたが言及したのでcaseInsensitiveCompare:
、これはあなたがそれをどのように使用するかです:
BOOL hasSuffix = (NSOrderedSame == [[selectedFile substringFromIndex:[selectedFile length] - 3]] caseInsensitiveCompare:@"JPG"]);
それは一口です!
rangeOfString:options:
接尾辞とを渡して、を使用することもできますNSCaseInsensitiveSearch
。