Java split split string para evitar hoyos

Hay 2 puntos a tener en cuenta al usar split para segmentación de cuerdas

1. Cuando se usan caracteres especiales como separadores, debe usar \\ para escapar (como \\ -> \\\\; | -> \\ |)

Caracteres especiales

.$|()[{^?*+\\

Por ejemplo, "|" separados

Sin escape

        String str = "01|02|03"; 
        String[] strArr = str.split("|");
        System.out.println(strArr.length); //输出8
        for (int i = 0; i < strArr.length; ++i) {
            System.out.println(strArr[i]);//输出0 1 | 0 2 | 0 3 
        }

Escapar

        String str = "01|02|03"; 
        String[] strArr = str.split("\\|");
        System.out.println(strArr.length); //输出3
        for (int i = 0; i < strArr.length; ++i) {
            System.out.println(strArr[i]);//输出01 02 03
        }

o

        String str = "01|02|03"; 
        String[] strArr = str.split("[|]");
        System.out.println(strArr.length); //输出3
        for (int i = 0; i < strArr.length; ++i) {
            System.out.println(strArr[i]);//输出01 02 03
        }

o

        String str = "01|02|03";
        // 以|为分隔符来分隔字符串
        StringTokenizer st=new StringTokenizer(str,"|");
        while(st.hasMoreTokens()) {
        	System.out.println(st.nextToken());//输出01 02 03
        }

2. Preste atención al procesamiento del último carácter vacío (generalmente en algunos casos cuando los datos finales están vacíos, solo se reserva un separador. Si no se procesa, el número de datos después de la división no es el mismo que el esperado)

        String str = "01|02|03|"; //注意在最后多了一个|分隔符
        String[] strArr = str.split("\\|");
        System.out.println(strArr.length); //输出3
        for (int i = 0; i < strArr.length; ++i) {
            System.out.println(strArr[i]);//输出01 02 03
        }

Si necesita mantener los datos del último carácter nulo, debe establecer el segundo parámetro de split en -1

        String str = "01|02|03|"; //注意在最后多了一个|分隔符
        String[] strArr = str.split("\\|",-1);
        System.out.println(strArr.length); //输出4
        for (int i = 0; i < strArr.length; ++i) {
            System.out.println(strArr[i]);//输出01 02 03 空字符
        }

Captura de pantalla de fuente dividida 

Supongo que te gusta

Origin blog.csdn.net/lw112190/article/details/107022115
Recomendado
Clasificación