String的分隔符

(1)空字符串作为分隔符

    public static void main(String[] args) {
        String str="abc* def";
        String[] splits = str.split("");
        for (String string : splits) {
            System.out.println(string);
        }
    }

结果:
这里写图片描述
有多少个字符,就被分割成几份。
(2)单个空格作为分隔符

    public static void main(String[] args) {
        String str="abc* def";
        String[] splits = str.split(" ");
        for (String string : splits) {
            System.out.println(string);
        }
    }

结果:
这里写图片描述
(3)特殊分隔符需要转义
采用’*’作为分隔符,代码示例:

    public static void main(String[] args) {
        String str="abc* def";
        String[] splits = str.split("*");
        for (String string : splits) {
            System.out.println(string);
        }
    }

结果抛出异常:
这里写图片描述
类似*,[,],{,},|,.这些特殊字符需要转义。使用双反斜杠进行转义,例如使用‘\[’对‘[’进行转义

    public static void main(String[] args) {
        String str="abc* def";
        String[] splits = str.split("\\*");
        for (String string : splits) {
            System.out.println(string);
        }
    }

结果:
这里写图片描述
(3)多个分隔符怎么处理呢?多个字符之间用‘|’隔开
看例子:

    public static void main(String[] args) {
        String str="hello   *n*&{ 7%world";

        //以'*'和'&'作为分隔符,对'*'需要进行转义
        String[] splits = str.split("\\*|&");
        for (String string : splits) {
            System.out.println(string+"-");
        }
    }

结果:
这里写图片描述
(4)如果以空格作为分隔符,但是空格的个数不确定,可能1个空格,2个空格,多个空格,还有可能是tab制表符,那么该怎么办呢?

    public static void main(String[] args) {
        //bc和mn7之间采用的是2个制表符tab
        String str="a 4   bc        mn7    he";
        //使用单个空格作为分隔符
        String[] splits = str.split(" ");
        for (String string : splits) {
            System.out.println(string+"-");
        }
    }

结果:
这里写图片描述
显然,上面的结果并非我们想要的。该怎么处理呢?

使用”\\s+”作为分隔符
    public static void main(String[] args) {
        String str="a 4   bc        mn7    he";

        //使用"\\s+"作为分隔符
        //能够完美解决多个空格或tab制表符的问题
        String[] splits = str.split("\\s+");
        for (String string : splits) {
            System.out.println(string+"-");
        }
    }

运行结果:
这里写图片描述
(5)如果要提取出所有的英文单词呢?怎么办呢?
思路:以所有英文字符之外的字符作为分隔符。

    public static void main(String[] args) {
        String str="hello   *N*&{ 7%world";

        //"[a-zA-Z]"表示以a-z,A-Z作为分隔符
        //"[^a-zA-Z]"表示以a-z,A-Z之外的字符作为分隔符
        //"[0-9]"表示以0-9作为分隔符
        String[] splits = str.split("[^a-zA-Z]");
        for (String string : splits) {
            if(string.length()!=0){
                System.out.println(string);
            }
        }
    }

str.split(“[^a-zA-Z0-9]”);//表示以(a-z,A-Z,0-9)以外的字符作为分隔符
str.split(“[a-zA-Z0-9]”);//表示以(a-z,A-Z,0-9)作为分隔符

运行结果:
这里写图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值