java截取字符串中的指定字符的两种方法(以base64图片为例)

 更新时间:2023年08月08日 10:23:17   作者:【金融科技蚂蚁】  
本文介绍了使用Java截取字符串中指定字符的方法,通过substring索引和正则实现,文章详细介绍了实现步骤和示例代码,对于想要了解如何使用Java截取字符串指定字符的读者具有一定的参考价值

首先抛出如下问题:

前端传了一个 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截取字符串指定字符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java字符编码原理(动力节点Java学院整理)

    Java字符编码原理(动力节点Java学院整理)

    Java开发中,常常会遇到乱码的问题,一旦遇到这种问题,常常比较烦恼,大家都不想承认是自己的代码问题,其实搞明白编码的本质过程就简单多了,接下来小编给大家带来java字符编码原理,要求看看吧
    2017-04-04
  • Java创建多线程局域网聊天室实例

    Java创建多线程局域网聊天室实例

    这篇文章主要介绍了Java创建多线程局域网聊天室实例,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • 使用eclipse 实现将springboot项目打成jar包

    使用eclipse 实现将springboot项目打成jar包

    这篇文章主要介绍了使用eclipse 实现将springboot项目打成jar包的流程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Mybatis-Plus实现只更新部分字段的数据

    Mybatis-Plus实现只更新部分字段的数据

    这篇文章主要介绍了Mybatis-Plus实现只更新部分字段的数据,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • mybatis框架之mybatis中dao层开发的两种方法

    mybatis框架之mybatis中dao层开发的两种方法

    这篇文章主要介绍了mybatis框架之mybatis中dao层开发的两种方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • SpringBoot的拦截器中依赖注入为null的解决方法

    SpringBoot的拦截器中依赖注入为null的解决方法

    这篇文章主要介绍了SpringBoot的拦截器中依赖注入为null的解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • 关于SpringMVC请求域对象的数据共享问题

    关于SpringMVC请求域对象的数据共享问题

    这篇文章主要介绍了SpringMVC请求域对象的数据共享问题,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • 10个Java解决内存溢出OOM的方法详解

    10个Java解决内存溢出OOM的方法详解

    在Java开发过程中,有效的内存管理是保证应用程序稳定性和性能的关键,不正确的内存使用可能导致内存泄露甚至是致命的OutOfMemoryError(OOM),下面我们就来学习一下有哪些解决办法吧
    2024-01-01
  • Java用Cookie限制点赞次数(简版)

    Java用Cookie限制点赞次数(简版)

    最近做了一个项目,其中有项目需求是,要用cookie实现限制点赞次数,特此整理,把实现代码分享给大家供大家学习
    2016-02-02
  • Java8 Collectors.toMap的坑

    Java8 Collectors.toMap的坑

    这篇文章主要介绍了Java8 Collectors.toMap的坑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03

最新评论