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 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 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()!]
}