如何检测字符串是否为Base64编码? [目的-C]

时间:2016-11-09 05:56:44

标签: ios objective-c regex nsstring base64

我正在努力使这项工作,我必须检测我在响应中收到的字符串是否为base64编码,并相应地处理它。

到目前为止,我尝试了两种方法:

1

if ([input length] % 4 == 0 && input.length >= 3) {
    static NSCharacterSet *invertedBase64CharacterSet = nil;
    if (invertedBase64CharacterSet == nil) {
        invertedBase64CharacterSet = [[NSCharacterSet characterSetWithCharactersInString:@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="]invertedSet];
    }
    return [input rangeOfCharacterFromSet:invertedBase64CharacterSet options:NSLiteralSearch].location == NSNotFound;
}
return NO;

2。

NSString *expression = regexString;
NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:expression options:NSRegularExpressionCaseInsensitive error:&error];
NSUInteger numberOfMatches = [regex numberOfMatchesInString:self options:0 range:NSMakeRange(0, [self length])];

if (numberOfMatches > 0) {
    return YES;
} else {
    return NO;
}

一切正常,除非字符串长度为4个字符,如'Adam',上面的片段都认为这是一个不正确的base64字符串。

如果有人知道检测Base64字符串的更好方法,请告诉我,它也应该适用于长度为4个字符的字符串。

提前致谢。

0 个答案:

没有答案