From: http://www.rgagnon.com/javadetails/java-0438.html
Some notes from A. gonzares 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 someComplexOperations 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 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()!] }