Java string split function acting strange
java, split, string
Solution
The default behavior of split is to not return empty tokens (because of a zero limit). Use the two parameter split method with a limit of -1 will give you all empty tokens in the return.
UPDATE:
Test code as follows:
public class Test {
public static void main(String[] args) {
String currentString[] = "0|1|2|3|4|5|6|7|8||".split("\\|", -1);
System.out.println("Length:"+currentString.length);
for(int i=0;i < currentString.length;i++){ System.out.println(currentString[i]); }
}
}
Output as follows:
Length:11
0
1
2
3
4
5
6
7
8
--- BLANK LINE --
--- BLANK LINE --
The "--- BLANK LINE --" is put in by me to show that the return is blank. It is blank once for the empty token after 8| and once for the empty trailing token after the last |.
Hope this clears things up.
Problem
I am noticing strange behaviour when using the `split()` method in Java. I have a string as follows: `0|1|2|3|4|5|6|7|8|9|10` ``` String currentString[] = br.readLine().split("\\|"); System.out.println("Length:"+currentString.length); for(int i=0;i < currentString.length;i++){ System.out.println(currentString[i]); } ``` This will produce the desired results: ``` Length: 11 0 1 2 3 4 5 6 7 8 9 10 ``` However if I receive the string: `0|1|2|3|4|5|6|7|8||` I get the following results: ``` Length: 8 0 1 2 3 4 5 6 7 8 ``` The final 2 empties are omitted. I need the empties to be kept. Not sure what i am doing wrong. I have also tried using the split in this manner as well. ...`split("\\|",-1);` but that returns the entire string with a length of 1. Any help would be greatly appreciated!