java截取字符串中的指定字符的两种方法(以base64图片为例)
首先抛出如下问题:
前端传了一个 base64 类型的图片给后端,那么我后端要怎么获取这个图片的类型呢?是 image /gif 还是 image/jpeg 亦或是 image/png ?这个时候你当然可以在后端将 base64 类型的图片转化为 File 类型或者 byte 类型,然后调用 java 内置的获取文件类型的方法即可,但这不是最简便的, 下面介绍简单粗暴的方法:利用截取指定字符的方式去获取图片类型。
假设前端传给后端的 base64 字符串为:
data:image/jpeg;base64,R0lGODlhHAAmAKIHAKqqqsvLy0hISObm5vf394uLiwAAA=
显然这个字符串前半部分已经涵盖了文件类型(位于冒号和分号之间的部分),我们只需要将其截取出来即可,代码如下:
方法一、使用substring索引
String base64File= "data:image/jpeg;base64,R0lGODlhHAAmAKIHAKqqqsvLy0hISObm5vf394uLiwAAA="; int beginIndex = base64File.indexOf(":"); //开始截取的索引值 System.out.println("开始截取的索引值为:" + beginIndex); int endIndex = base64File.indexOf(";"); //结束截取的索引值 System.out.println("结束截取的索引值为:" + endIndex); String fileType = base64File.substring(beginIndex + 1, endIndex); //开始截取的索引值需加 1 ,因为 substring 方法取头不取尾 System.out.println("图片类型为:" + fileType); if(!"image/jpeg".equals(fileType)) { return "图片类型有误,请重传!" }
运行结果如下:
注意:上述代码不可写成如下形式:
String base64File= "data:image/jpeg;base64,R0lGODlhHAAmAKIHAKqqqsvLy0hISObm5vf394uLiwAAA="; String fileType = base64File.substring(5, 15); System.out.println("图片类型为:" + fileType);
beginIndex 和 endIndex 不能写死,因为图片类型不一定是 10 位的,如果图片类型是 image/png(9位的),那么上述代码的结果将是 "image/png;" ,尾巴多了一个分号是错误的。
方法二、使用正则表达式
String base64File ="data:image/jpeg;base64,R0lGODlhHAAmAKIHAKqqqsvLy0hISObm5vf394uLiwAAA="; Pattern pattern = Pattern.compile("(?<=:)[\\s\\S]*(?=;)"); //冒号和分号之间的任意字符 Matcher matcher = pattern.matcher(base64File); if(matcher.find()) { System.out.println("截取的字符串为:" + matcher.group()); }
运行结果如下:
到此这篇关于java截取字符串中的指定字符的两种方法(以base64图片为例)的文章就介绍到这了,更多相关java截取字符串指定字符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
最新评论