Hey everyone
How would I take a field with values separated by backslashes "/" and split it into an array that I specify? I don't think .split will do the job - something like parseStringDelimiter or $convert.toString , or perhaps a combination!
Any ideas? My data looks like this:
ABCD/GIST/SPIT
Thanks in advance!
Solved! Go to Solution.
split() will work, sure.
Thanks Sanford.
I'm playing around with it and unfortunately having some trouble. I understand I need to escape the special character "/" in order to split the string based on that - but I can't seem to even get a basic split working.
Here's my code:
#set ($DossierArray = ${lead.wishListtoWin2016Dossiers}.split('\/'))
$DossierArray
And I get this error:
Cannot get email content-
An error occurred when procesing the email Body!
Lexical error, Encountered: "s" (115), after : "." at *unset*[line 12, column 66] near
</div>
${mktmail.Optout}
</body>
</html>
That's a similar error to the one I've often got when I haven't removed whitespace - but I ran it through an online whitespace removal tool, so I don't think it's that. But my email that I'm previewing is ONLY the email script token, so it must be related to that token.
Strangely, I can't even seem to get a simple string split to work either. Using this code:
#set ($test = "This string contains the letter s")
$test.split('s')
I get this error:
[Ljava.lang.String;@151e693a
Clearly something is going horribly wrong here Any ideas why?
VTL doesn't use basic backslash escapes, only explicit Unicode: "\u002f" is a forward slash.
The second case isn't an error, it's showing you successfully split into an array of strings. You'd then have to loop over it or seek an array index.
Thanks Sanford. Unfortunately I'm still having trouble - and I don't think it's related explicitly to that .split functionality now. When I use:
#set ($DossierArray = ${lead.wishListtoWin2016Dossiers}.split("\u002f"))
$DossierArray
I'm still getting that same lexical error above. Even when I replace the Unicode info with "a", it still gives me the same error. What does "s (115) mean?
Take out the curly braces.
#set ($string = "ABCD/GIST/SPIT")
#set ($output = $string.split('/'))
$output[0]
$output[1]
$output[2]
Works for me
Also, Nicho is right that the forward slash doesn't actually need to be escaped in Velocity/Java regex.
It's still not a bad idea to escape it (as "\u002f" above ) so you don't get confused in JavaScript regex literals, where it is reserved (in JS, "a/b/c/d".split(///) is a syntax error and has to be "a/b/c/d".split(/\//) or "a/b/c/d".split(/\u002f/) ).
Thanks everyone, it seems to be working correctly now!
Once I removed the brackets and referenced a specific part of the array it is working fine!