我正在努力使这项工作,我必须检测我在响应中收到的字符串是否为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个字符的字符串。
提前致谢。