Splitting a string in Java
When I split the string "1|2|3|4"
using the String.split("|")
I get 8 elements in the array i开发者_JS百科nstead of 4. If I use "\\|"
the result is proper. I am guessing this has something todo with regular expressions. Can anybody explain this?
You're right. |
is a special character for alternation. The regular expression |
means "an empty string or an empty string". So it will split around all empty strings, resulting 1 element for each character in the string. Escaping it \|
make it a normal character.
If you want to split a string without using a regex, I'd recommend the Splitter class from Guava. It can split on fixed strings, regexes and more.
Iterable<String> split = Splitter.on('|').split("1|2|3|4");
|
is OR
in Java regular expression syntax, basically splitting 1|2|3|4
with |
is equal to telling String#split()
to "split this string between empty OR empty) which means it splits after every character you have in the original string.
精彩评论