Ich möchte überprüfen, ob eine Eingabezeichenfolge gültige Base64 ist oder nicht. Wenn es gültig ist, dann wandle es in Byte [] um.Überprüfen Sie die Zeichenfolge als Proper Base64String und Konvertieren in Byte []
Ich habe versucht, die folgenden Lösungen
RegEx
MemoryStream
Convert.FromBase64String
Zum Beispiel habe ich überprüfen möchten, ob "932rnqia38y2"
eine gültige Base64-String ist oder nicht und wandeln sie dann zu byte[]
. Diese Zeichenfolge ist nicht gültig Base64, aber ich werde immer wahr oder gültig in meinem Code.
Bitte lassen Sie mich wissen, wenn Sie irgendwelche Lösungen haben.
-Code
//Regex _rx = new Regex(@"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}[AEIMQUYcgkosw048]=|[A-Za-z0-9+/][AQgw]==)?$", RegexOptions.Compiled);
Regex _rx = new Regex(@"^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$", RegexOptions.Compiled);
if (image == null) return null;
if ((image.Length % 4 == 0) && _rx.IsMatch(image))
{
try
{
//MemoryStream stream = new MemoryStream(Convert.FromBase64String(image));
return Convert.FromBase64String(image);
}
catch (FormatException)
{
return null;
}
}
932rnqia38y2 mir gültig aussieht. Rufen Sie einfach FromBase64String auf und fangen Sie das Potential Exception sollte ausreichend sein. – Ralf
Ich glaube nicht, dass Sie überprüfen können, ob eine Zeichenfolge mit regulären Ausdrücken als Base-64 interpretiert werden kann. In jedem Fall ist der String, den Sie zu validieren versuchen * gültig *, also ist es nicht überraschend, dass Sie wahr werden. Ob die Daten * in * der String gültig sind, ist ein ganz anderes Problem. – Luaan