java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java split方法使用

Java split方法使用超详细讲解

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

您可能感兴趣的文章:
阅读全文