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方法使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 注册中心配置了spring security后客户端启动报错

    注册中心配置了spring security后客户端启动报错

    这篇文章主要为大家介绍了注册中心配置了spring security后客户端启动报错问题解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Java反射学习 getClass()函数应用

    Java反射学习 getClass()函数应用

    所谓反射,可以理解为在运行时期获取对象类型信息的操作,本文将详细介绍,需要的朋友可以参考下
    2012-12-12
  • java中的equals()和toString()方法实例详解

    java中的equals()和toString()方法实例详解

    这篇文章主要介绍了java中的equals()和toString()方法实例详解的相关资料,这里举例说明,并附实例代码,和实现效果图,需要的朋友可以参考下
    2016-11-11
  • spring注入在有常量的情况下使用@AllArgsConstructor操作

    spring注入在有常量的情况下使用@AllArgsConstructor操作

    这篇文章主要介绍了spring注入在有常量的情况下使用@AllArgsConstructor操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 详解WebSocket+spring示例demo(已使用sockJs库)

    详解WebSocket+spring示例demo(已使用sockJs库)

    本篇文章主要介绍了WebSocket spring示例demo(已使用sockJs库),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • 浅谈JDK9的特性之JVM的xlog

    浅谈JDK9的特性之JVM的xlog

    在java程序中,我们通过日志来定位和发现项目中可能出现的问题。在现代java项目中,我们使用log4j或者slf4j,Logback等日志记录框架来处理日志问题。本文将介绍JDK9的特性之JVM的xlog。
    2021-06-06
  • Netty如何自定义编码解码器

    Netty如何自定义编码解码器

    Netty自定义编码解码器:InboundHandler处理入栈数据,OutboundHandler处理出栈数据,解码器继承ByteToMessageDecoder,编码器继承MessageToByteEncoder,ReplayingDecoder简化了解码逻辑,但可能因异常重试导致性能下降
    2025-03-03
  • java类中元素初始化顺序详解

    java类中元素初始化顺序详解

    对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器
    2013-08-08
  • Java TimedCache 带时间缓存工具类详解使用

    Java TimedCache 带时间缓存工具类详解使用

    工具类是包含集合框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组、日期Date类、堆栈Stack类、向量Vector类等)。集合类、时间处理模式、日期工具等各类常用工具包,本文将介绍带时间缓存工具类
    2021-10-10
  • maven中resource配置的实现示例

    maven中resource配置的实现示例

    我们在使用Maven组件来构建项目的时候,通常将配置文件放在资源文件目录下,本文主要介绍了maven中resource配置的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09

最新评论