检查NSString是否包含base64数据
如何检查一个NSString是否在if语句中包含base64数据? 因为base64以完全随机的方式对数据进行编码,所以我无法在NSString中search一个短语,所以我需要检查string的内容是否在数据文件中。
这是我创build的应该工作的NSString
类别:
@interface NSString (MDBase64Additions) - (BOOL)isBase64Data; @end @implementation NSString (MDBase64Additions) - (BOOL)isBase64Data { if ([self length] % 4 == 0) { static NSCharacterSet *invertedBase64CharacterSet = nil; if (invertedBase64CharacterSet == nil) { invertedBase64CharacterSet = [[[NSCharacterSet characterSetWithCharactersInString: @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="] invertedSet] retain]; } return [self rangeOfCharacterFromSet:invertedBase64CharacterSet options:NSLiteralSearch].location == NSNotFound; } return NO; } @end
如果您希望数据中有换行符或空格,则可以更新此方法以首先删除那些(可能是NSCharacterSet
的+whitespaceCharacterSet
)。
如果主要只有一个类将使用此类别方法,则可以将此代码放在该类的@implementation
块上方的.m文件中。 如果您认为您可能希望从多个类中使用该类别,则可以创build一个单独的.h&.m对来包含它(例如, MDFoundationAdditions.h
, MDFoundationAdditions.m
),然后将其导入到这些类中。
使用:
NSString *dataString = /* assume exists */; if ([dataString isBase64Data]) { }