0

我有一个图像数据,我需要从中删除以下子字符串

data:image/jpeg;base64,

从字符串

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD......

data:image/png;base64......
data:image/;base64

然后我正在考虑做类似以下的事情

   imageData = imageData.replace("regex", "");
   return Base64.decodeBase64(imageData.getBytes());

我想先知道正则表达式,也想知道是否调用

    imageData.getBytes()

会不会成功...

4

1 回答 1

7
  1. .replace(regex,repl)将正则表达式视为“文字”(不允许使用“ ^”来表示行首等) -.replaceFirst(regex,repl)改为尝试
  2. 如此处所讨论- 尝试其他 Base64 解码器(可能更适合您的需要,下面的一个可能存在超过 64KB 字符串长度的问题)

除了验证/处理 - 最终应该是这样的:

String imageData = "data:image/jpeg;base64,SGVsbG8sIHdvcmxkIQ==";
imageData = imageData.replaceFirst("^data:image/[^;]*;base64,?","");
byte[] bytes = javax.xml.bind.DatatypeConverter.parseBase64Binary(imageData);
System.out.println(new String(bytes));

输出:

Hello, world!
于 2013-10-22T05:47:04.480 回答