Java split方法使用超详细讲解

 更新时间:2023年10月10日 11:54:41   作者:Chen_PK  
这篇文章主要给大家介绍了关于Java split方法使用的相关资料,Java中的我们可以利用split把字符串按照指定的分割符进行分割,然后返回字符串数组,需要的朋友可以参考下

1. 问题描述

描述:在日常编写代码时,我们经常遇到需要将一串字符串中的数据进行分析摘取,从中获得分隔符外的数据,此时便不得不提split方法。

2. 方法介绍

分隔符可以是任意字符、符号、数字、字符串等。

2.1 split(String regex)

2.1.1 单个分隔符

public class Test {
    public static void main(String[] args) {
        String str="2018,text,今天";
        //单个分隔符用引号括起来即可
        String[] data = str.split(",");
        for(int i=0;i< data.length;i++){
            System.out.println(data[i]);
        } 
    }
}

 上述代码输出结果

 如果分隔符本身就是"|",那么就需要使用转义字符"\"让其产生效果,否则结果相反。

public class Test {
    public static void main(String[] args) {
        String str="a|bc|8";
        //java中\\表示一个普通\,\+特殊字符表示字符本身
        String[] data = str.split("\\|");
        for(int i=0;i< data.length;i++){
            System.out.println(data[i]);
        }
    }
}

 反之如果直接使用则会有相反效果, 输出字符串中的单个字符。如下所示:

public class Test {
    public static void main(String[] args) {
        String str="a|bc|8";
        //java中\\表示一个普通\,\+特殊字符表示字符本身
        String[] data = str.split("|");
        for(int i=0;i< data.length;i++){
            System.out.println(data[i]);
        }
    }
}

2.1.2 多个分隔符

public class Test {
    public static void main(String[] args) {
        String str="2021年11月18日;英语,数学,语文;";
        //多个分隔符用引号括起来,并且用“|”进行分割
        String[] data = str.split(",|;");
        for(int i=0;i< data.length;i++){
            System.out.println(data[i]);
        } 
    }
}

 2.1.3 正则表达式表示分隔符

在正则表达式中"\d+"表示一个或多个数字,是用于从一堆数字字母以及其它字符组成的字符串中获取非数字字符或字符串。

public class Test {
    public static void main(String[] args) {
        String str="2018年11月18日abcd85gg688";
        //正则表达式中\d+表示一个或多个数字,java中\\表示一个普通\
        String[] data = str.split("\\d+");
        for(int i=0;i< data.length;i++){
            System.out.println(data[i]);
        } 
    }
}

 上述代码输出结果

 2.1.4 特殊情况

  1. 字符串开头有分隔符:开头产生一个空字符串,其余正常。
  2. 分隔符相互紧挨着:每两个分隔符产生一个空字符串,若有三个分隔符则会有2各空字符,以此类推。
  3. 字符串最尾部有分割符:末尾产生一个空字符串,其余正常。

2.2 split(String regex, int limit)

  1. 如果 limit > 0,(从左到右)最多分割 n - 1 次,数组的长度将不会大于 n,结尾的空字符串不会丢弃。
  2. 如果 limit < 0,匹配到多少次就分割多少次,而且数组可以是任何长度。结尾的空字符串不会丢弃。
  3. 如果 limit = 0,匹配到多少次就分割多少次,数组可以是任何长度,并且结尾空字符串将被丢弃。

也就是说,使用split方法时,如果只填一个正则表达式,结尾空字符串将被丢弃

补充:你没想到的Java中split函数的用法

split:字符串切分,返回String数组

语法:

 public String[] split(String regex, int limit)
     // regex:正则表达式分割符
     // limit:分割的份数(等于切分次数+1),这个参数可以不给

代码示例:

 String str = "Welcome-to-Runoob";
 for(String retval: str.split("-")){
     System.out.println(retval);
 }

执行结果:

 Welcome
 to
 Runoob

如果将第二行中的某部分改写为

 Str.split("-",2)

则结果变为:

 Welcome
 to-Runoob

由于在正则表达式语法中有很多特殊字符,比如.*?+,所以有时会用到转义字符,比如

 str = new String("www.runoob.com");
 for(String retval: str.split("\\.",3)){
     System.out.println(retval);
 }

结果

 www
 runoob
 com

如果想要使用多种分割符对字符串分割,可以利用正则表达式的语法| [ ]

 String str = new String("1+22*333-4444/5555%666666=?");
 for(String retval: str.split("[+*-/%]")){
     System.out.println(retval); 
 }
 for(String retval: str.split("[0-9.]+")){
     System.out.println(retval);
 }
 for(String retval: str.split("(\\+)|(-)|(\\*)|(/)|(%)")){
     System.out.println(retval); 
 }
 for(String retval: str.split("[^0-9.]")){
     System.out.println(retval); 
 }

结果:

 1
 22
 333
 4444
 5555
 666666=?
 ?
 +
 *
 -
 /
 %
 =?
 1
 22
 333
 4444
 5555
 666666=?
 1
 22
 333
 4444
 5555
 666666

总结

到此这篇关于Java split方法使用的文章就介绍到这了,更多相关Java split方法使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • springmvc常用注解标签详解

    springmvc常用注解标签详解

    本篇文章主要介绍了springmvc常用注解标签详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • SpringBoot集成Swagger2实现Restful(类型转换错误解决办法)

    SpringBoot集成Swagger2实现Restful(类型转换错误解决办法)

    这篇文章主要介绍了SpringBoot集成Swagger2实现Restful(类型转换错误解决办法),需要的朋友可以参考下
    2017-07-07
  • Flask实现异步非阻塞请求功能实例解析

    Flask实现异步非阻塞请求功能实例解析

    这篇文章主要介绍了Flask实现异步非阻塞请求功能实例解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • java自动装箱拆箱深入剖析

    java自动装箱拆箱深入剖析

    基本数据(Primitive)类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。java语言规范中说道:在许多情况下包装与解包装是由编译器自行完成的(在这种情况下包装成为装箱,解包装称为拆箱)
    2012-11-11
  • SpringBoot3和mybatis-plus整合出现的问题解决办法

    SpringBoot3和mybatis-plus整合出现的问题解决办法

    SpringBoot和MybatisPlus的整合可以让我们更加方便地进行数据库操作,这篇文章主要给大家介绍了关于SpringBoot3和mybatisplus整合出现的一些问题的相关资料,需要的朋友可以参考下
    2024-01-01
  • 详解spring多线程与定时任务

    详解spring多线程与定时任务

    本篇文章主要介绍了spring多线程与定时任务,详细的介绍了spring多线程任务和spring定时任务,有兴趣的可以了解一下。
    2017-04-04
  • SpringBoot实现上传文件到AWS S3的代码

    SpringBoot实现上传文件到AWS S3的代码

    这篇文章主要介绍了SpringBoot实现上传文件到AWS S3的代码,帮助大家更好的理解和使用springboot框架,感兴趣的朋友可以了解下
    2020-10-10
  • Java中的分布式锁与同步锁使用详解

    Java中的分布式锁与同步锁使用详解

    这篇文章主要介绍了Java中的分布式锁与同步锁使用详解,在分布式系统中,由于存在多个节点并行执行任务,可能会出现竞争条件和数据不一致的问题,分布式锁通过约束同一时刻只有一个节点能够获得锁的方式,确保了对共享资源的独占访问,需要的朋友可以参考下
    2023-07-07
  • Spring声明式事务@Transactional知识点分享

    Spring声明式事务@Transactional知识点分享

    在本篇文章里小编给大家整理了关于Spring声明式事务@Transactional详解内容,需要的朋友们可以参考下。
    2020-02-02
  • kafka topic 权限控制(设置删除权限)

    kafka topic 权限控制(设置删除权限)

    大家都知道Kafka是一个消息队列,把消息放到队列里边的叫生产者,从队列里边消费的叫消费者。今天通过本文给大家介绍kafka topic 权限控制的相关知识,感兴趣的朋友一起看看吧
    2021-11-11

最新评论