The Java official documentation states:
The string "boo:and:foo"
, for example, yields the following results with these expressions
Regex Result
:
{ "boo", "and", "foo" }"
And that's the way I need it to work. However, if I run this:
public static void main(String[] args){
String test = "A|B|C||D";
String[] result = test.split("|");
for(String s : result){
System.out.println(">"+s+"<");
}
}
it prints:
><
>A<
>|<
>B<
>|<
>C<
>|<
>|<
>D<
Which is far from what I would expect:
>A<
>B<
>C<
><
>D<
Why is this happening?
Best Answer
You need
split
uses regular expression and in regex|
is a metacharacter representing theOR
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
and let
Pattern.quote
create the escaped version of the regex representing|
.