zoukankan      html  css  js  c++  java
  • Java开发:字符串切割split函数——切割符转码注意事项

    一、问题如下:

      1、先对一个已有字符串进行操作,使用     ;     进行分割:

    //示例字符串
    String string="sr1.db1.tb1.df1;sr2.db2.tb2.df2;";
    //先用;进行分割
    String a[]=string.split(";");
    for(String str:a)
    {
        System.out.println(str);
    }

      此处切割之后的结果是没有问题的,结果为:

      

      2、对切割完的结果再用     .     进行切割:

    //示例字符串
    String string="sr1.db1.tb1.df1;sr2.db2.tb2.df2;";
    //先用;进行分割
    String a[]=string.split(";");
    for(String str:a)
    {
        String b[]=str.split(".");
        for(String str2:b)
        {
            System.out.println(str2);
        }
    }

      此时就会报错,无法得出结果

    二、问题解析

      split方法的参数是正则表达式,在使用字符或字符串作切割符时要注意对某些字符做转码

      就像之前问题里使用   ;   进行切割就没什么问题,但是使用   .   进行切割就会出现报错。     在正则表达式中表示任意字符,如果要通过.号做分割,则需要使用双斜杠或者Pattern.quote()方法对其进行转码:

    split("\.")
    split(Pattern.quote("."))

      这样问题就得到了解决:

    //示例字符串
    String string="sr1.db1.tb1.df1;sr2.db2.tb2.df2;";
    //先用;进行分割
    String a[]=string.split(";");
    for(String str:a)
    {
        String b[]=str.split(Pattern.quote("."));
        for(String str2:b)
        {
            System.out.println(str2);
        }
    }

      结果如下:

      

  • 相关阅读:
    PHP时间戳常用转换
    redis基本指令
    P2501 [HAOI2006]数字序列
    P2679 子串
    P2759 奇怪的函数
    P6823 「EZEC-4」zrmpaul Loves Array
    P6631 [ZJOI2020] 序列
    P2887 [USACO07NOV]Sunscreen G
    P3287 [SCOI2014]方伯伯的玉米田
    拓展欧几里得算法揭秘
  • 原文地址:https://www.cnblogs.com/guobin-/p/11871137.html
Copyright © 2011-2022 走看看