1

I tried applying the method someone posted here

AmpScript to select Right or Left characters from a string but "-"

gives me an error in Salesforce Marketing Cloud.

This is my code:

Set @creditcardnumberlastfour = Substring(@creditcardnumber,Length(@creditcardnumber)-4,4)=%%

I try to capture the last 4 characters. What do I do wrong? Thanks.

1
  • Can you please post your error?
    – 0xsegfault
    May 23, 2017 at 15:27

1 Answer 1

6

AMPScript does not recognize '-' as subtract, you need to use the SUBTRACT() function to accomplish this. (Also, you have the =%% tail on this, when it needs to reside inside of an ampscript block)

See below:

%%[

Set @cardnumberlastfour = Substring(@cardnumber, SUBTRACT(Length(@cardnumber), 3), 4)

]%%

EDIT
Adding some extra context as requested by @kcalero:

Below is taken from AMPScript Guide to show the arguments for the function: enter image description here

Basically what I am doing in the above is:

  1. Taking the string (@cardnumber) and placing it into the first argument.
  2. Using math,SUBTRACT(), I find the starting point. For this case since I want to only take the last 4 characters, I take the Length of the string and then subtract 4 from it. Basically, if length is 8, then I use math to set the start point at 8 - 4 = 4. This is then used as the second argument.
  3. The final argument is the length of the substring you want to use. E.g. since we want the last 4, we need this to be 4.

@kcalero - I would do the following:

%%[
    set @string = 'abcdefg'
    set @strLength = Length(@string)
    set @subLength = 2
    set @subStart = Subtract(@strLength,Subtract(@subLength,1))

    set @lastTwoChar = Substring(@string,@subStart,@subLength)
]%%

%%=v(@lastTwoChar)=%%


OUTPUT: fg

This will also give you a reusable script that you can change the string and @subLength to get different lengths of characters without having to change anything else.

6
  • No problem! If you find that this is the correct solution, please be sure to click the checkmark next to it to allow others to reference this if anyone has the same issue. May 23, 2017 at 17:17
  • checkmarked right away, thanks again, works like a charm!
    – Snowalker
    May 24, 2017 at 12:55
  • @gortonington can't quite get this to work in the way you have it. Trying to understand what the last two numbers are, but can't figure it out. Can you please describe what they represent?
    – kcalero
    Nov 11, 2019 at 21:31
  • @kcalero - I added more context to my answer and a different script that may help you to better understand and customize. Nov 12, 2019 at 14:30
  • Your example actually gives the result "ef" and not "fg". @subStart will be 5. So the substring will start from "e", and not "f" Jan 20, 2020 at 12:56

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .