zoukankan      html  css  js  c++  java
  • String.split()遇到空字符串不解析的情况

    1、split的api说明

    stringObj.split([separator,[limit]]) 

    stringObj:要被分解的 String 

    separator:字符串或正则表达式对象

    limit:参数控制模式应用的次数。当为正值:模式将被最多应用 n - 1 次。当负值:模式将被应用尽可能多的次数,

    2、案例:空字符串不被解析

    public class test {
        public static void main(String[] args) {
            String str = "1,2,3,4,,,";
            String[] arr = str.split(",");
            for (String string : arr) {
                System.out.println("str"+string);
            }
            System.out.println(arr.length);
        }
    }

    结果:

    str1

    str2

    str3

    str4

    4

    3、解决办法

    方法1:limit赋值成比该字符串被分隔成字符数组后数组的长度大很多的值,这能保证所有为空的都能被解析,

    方法2:limit设置为非正,也能全部解析

    public class test {
        public static void main(String[] args) {
            String str = "1,2,3,4,,,";
            String[] s = str.split(",",-1);
            for (String string : s) {
                System.out.println("str"+string);
            }
            System.out.println(s.length);
        }
    }

    输出:

    str1

    str2

    str3

    str4

    str

    str

    str

    7

    注意:

    1、如果用“.”作为分隔的话,必须是如下写法,String.split("\."),这样才能正确的分隔开,不能用String.split(".");
    2、如果用“|”作为分隔的话,必须是如下写法,String.split("\|"),这样才能正确的分隔开,不能用String.split("|");

  • 相关阅读:
    P1908 逆序对
    P3834 【模板】可持久化线段树 1(主席树)
    BZOJ 4300: 绝世好题
    Codevs 2185【模板】最长公共上升子序列
    P1439 【模板】最长公共子序列
    P3865 【模板】ST表
    【转】良心的可持久化线段树教程
    Codevs 1299 切水果
    P3388 【模板】割点(割顶)&& 桥
    P3805 【模板】manacher算法
  • 原文地址:https://www.cnblogs.com/tiandi/p/13650819.html
Copyright © 2011-2022 走看看