有可能知道字符串是否在base64中编码?
就那么简单。
我正在制作一个用户必须扫描QR码的应用程序(基本上是一个base64编码的字符串),有没有办法在解码之前validation字符串是否在base64中编码并遵循应用程序的流程?
我的代码将负责:
func captureOutput(captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [AnyObject]!, fromConnection connection: AVCaptureConnection!) { if metadataObjects == nil || metadataObjects.count == 0 { qrCodeFrameView?.frame = CGRectZero return } let metadataObj = metadataObjects[0] as AVMetadataMachineReadableCodeObject if metadataObj.type == AVMetadataObjectTypeQRCode { let barCodeObject = videoPreviewLayer?.transformedMetadataObjectForMetadataObject(metadataObj as AVMetadataMachineReadableCodeObject) as AVMetadataMachineReadableCodeObject qrCodeFrameView?.frame = barCodeObject.bounds if metadataObj.stringValue != nil /* Verify that string is base 64 before continue */ { let decodedData = NSData(base64EncodedString: metadataObj.stringValue, options: NSDataBase64DecodingOptions.IgnoreUnknownCharacters) let decodedString = NSString(data: decodedData!, encoding: NSUTF8StringEncoding) println(decodedString) } /* More code */ } }
如果字符串包含有效的Base-64,则无需提前检查。 您只需检查返回值,当输入未被识别为有效Base-64时,返回值为nil
:
if let decodedData = NSData(base64EncodedString: someString, options: nil) { // ... } else { println("Not Base64") }
您可以使用正则表达式检查字符串是否匹配base64编码,如下所示:
^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$
在base64编码中,字符集为[AZ,az,0-9和+ /],如果rest长度小于4,则填充'='
字符。
^([A-Za-z0-9+/]{4})*
表示字符串以0或更多时间的base64组开始。
([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)
表示字符串必须以[A-Za-z0-9+/]{4}
或[A-Za-z0-9+/]{3}=
或[A-Za-z0-9+/]{2}==
基本规则是:
- 检查长度是4个字符的倍数
- 检查每个字符是否在AZ,az,0-9,+,/集合中,除了最后的填充为0,1或2’=’字符
请使用For Base64validation
OtherWise在项目pod 'SwiftValidators'
添加pod 'SwiftValidators'
例
if Validators.isBase64()("mnbzcxmnbnzzxmnb==") { print("Validate Yes") } else { print("Not Validate") }
- 在iOS上的PhoneGap或Cleaver(Cordova)中加载远程html
- MFMailComposeViewController立即解散
- 当我隐藏它时,为什么状态栏会向我的图像滑回20点?
- 重新定位/调整UIBezierPath的大小
- Facebook IOS SDK 3.1.1与Xcode 4.5.2错误
- 如何根据设备屏幕大小调整collections视图单元格?
- 我怎样才能解密在iOS的XML文件与AES / CBC / PKCS5Padding标准,在Android的文件已被解密,所有的关键像盐,IV
- SLComposeViewController显示缓慢
- estimatedHeightForRowAt不被调用滚动