The Java official documentation states:
The string \"boo:and:foo\", for example, yields the following results with these expressions
Regex Result
:
You can also use .split("[|]").
(I used this instead of .split("\\|"), which didn't work for me.)
test.split("\\|",999);
Specifing a limit or max will be accurate for examples like: "boo|||a" or "||boo|" or " |||"
But test.split("\\|"); will return different length strings arrays for the same examples.
use reference: link
the split() method takes a regular expression as an argument
You need
test.split("\\|");
split uses regular expression and in regex | is a metacharacter representing the OR operator. You need to escape that character using \ (written in String as "\\" since \ is also a metacharacter in String literals and require another \ to escape it).
You can also use
test.split(Pattern.quote("|"));
and let Pattern.quote create the escaped version of the regex representing |.
You could also use the apache library and do this:
StringUtils.split(test, "|");
Use proper escaping: string.split("\\|")
Or, in Java 5+, use the helper Pattern.quote() which has been created for exactly this purpose:
string.split(Pattern.quote("|"))
which works with arbitrary input strings. Very useful when you need to quote / escape user input.