When I split the string "1|2|3|4" using the String.split("|") I get 8 elements in the array instead of 4. If I use "\\|" the result is proper. I am guessing this has something todo with regular expressions. Can anybody explain this?
3 Answers
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.
3 Comments
why should I tell you my name
Thanks for the reply.. is & is also a special character?
kennytm
@why: No it's not. See download-llnw.oracle.com/javase/6/docs/api/java/util/regex/…. You could use
\Q...\E to make sure the ... won't be interpreted as special characters.ColinD
@why should I tell you my name: regular-expressions.info/reference.html
String.split()method always uses regexes. There are more flexible APIs available, though.