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