java String split 按定长分割

from:http://www.rgagnon.com/javadetails/java-0438.html

Some notes from A. Gonzales about String.split()

Special cases using String.split():

public class StringSplit {

  public static void main(String args[]) throws Exception{

    System.out.println(

        java.util.Arrays.toString(

        "  s".split(" ")

    ));

    // output : [, , s]



    System.out.println(

        java.util.Arrays.toString(

        "".split("")

    ));

    // output : []



    System.out.println(

        java.util.Arrays.toString(

        "  ".split(" ")

    ));

    // output : []



    System.out.println(

        java.util.Arrays.toString(

        "      ".split(" ")

    ));

    // output : []



    System.out.println(

        java.util.Arrays.toString(

        " s ".split(" ")

    ));

    // output : [, s]

    }

}


It's important to note that an invocation like:

param = req.getParam(...);

String[] words = param.split(" ");

String firstWord = words[0];

will generate a NullPointerException if param.equals(" ").


Using split() with a space can be a problem. Consider the following :

public class StringSplit {

  public static void main(String args[]) throws Exception{

    String testString = "Real  How To";  // extra space



    System.out.println(

        java.util.Arrays.toString(

        testString.split(" ")

    ));

    // output : [Real, , How, To]

    }

}

We have an extra element. The fix is to specify a regular expression to match one or more spaces.

public class StringSplit {

  public static void main(String args[]) throws Exception{

    String testString = "Real  How To";



    System.out.println(

        java.util.Arrays.toString(

        testString.split("\\s+")

    ));

    // output : [Real, How, To]

    }

}


Since String.split() is based on regular expression, you can make some complex operations with a simple call!

    String testString = "{RealHowto}{java-0438.html}{usage of String.split()}";

    System.out.println(java.util.Arrays.toString(

        testString.split("[{}]")

    ));



    // output : [, RealHowto, , java-0438.html, , usage of String.split()]

    // note : extra empty elements :-(


To split a long string into into fixed-length parts. In this example, we split in groups of 3 characters :

    String testString = "012345678901234567890";

    System.out.println(java.util.Arrays.toString(

        testString.split("(?<=\\G.{3})")

    ));



    // output : [012, 345, 678, 901, 234, 567, 890]


To split but keep the separator :

   String testString = "RealHowto!java-0438.html!usage of String.split()!";

    System.out.println(java.util.Arrays.toString(

        testString.split("(?<=[!])")

    ));



    // output : [RealHowto!, java-0438.html!, usage of String.split()!]

  }

你可能感兴趣的:(java String)