开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜