Quick example:
public class Test {
public static void main(String[] args) {
String str = \" a b\";
String[] arr = str.split(\"\\\\s+\")
The simple solution is to use trim()
to remove leading (and trailing) whitespace before the split(...)
call.
You can't do this with just split(...)
. The split regex is matching string separators; i.e. there will necessarily be a substring (possibly empty) before and after each matched separator.
You can deal with the case where the whitespace is at the end by using split(..., 0)
. This discards any trailing empty strings. However, there is no equivalent form of split
for discarding leading empty strings.
Kind of a cheat, but replace:
String str = " a b";
with
String[] arr = " a b".trim().split("\\s+");
The other way to trim it is to use look ahead and look behind to be sure that the whitespace is sandwiched between two non-white-space characters,... something like:
String[] arr = str.split("(?<=\\S)\\s+(?=\\S)");
The problem with this is that it doesn't trim the leading spaces, giving this result:
a
b
but nor should it as String#split(...)
is for splitting, not trimming.
Instead of trimming, you could just add an if to check if a string is empty or not.