Split in Apex is very similar to Java string split. 

the pattern you pass to the split method is not a direct match, its a **REGEX** pattern. so the pipe symbol | is considered as a Regex input and it splits the string into individual characters.

You can use the below code to get thru this

    newString.split('\\|')

here's some other discussions around the same topic

https://stackoverflow.com/questions/6978901/splitting-a-string-using

and a [blog post][1] from Lacey on the same topic


  [1]: http://www.laceysnr.com/2010/03/string-splitting.html