Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
BedrockMission!

Learn More

View all

Sign in to view all badges

Converting and altering value in personalisation block

Avatar

Avatar
Validate 1
Level 1
Tarquinius
Level 1

Likes

0 likes

Total Posts

4 posts

Correct Reply

0 solutions
Top badges earned
Validate 1
View profile

Avatar
Validate 1
Level 1
Tarquinius
Level 1

Likes

0 likes

Total Posts

4 posts

Correct Reply

0 solutions
Top badges earned
Validate 1
View profile
Tarquinius
Level 1

27-04-2020

Hi,

 

First post, new to the platform so hoping so clever people can point me in the right direction! I'm trying to set up a personalisation block so I can convert a variable - but I'm struggling!

 

I have an XML string, I'm trying to extract a cost value (e.g. £1,509.10) from the string convert into a number (1,509.10), so I can subtract 10 from it). Any idea how to do this.

 

I've got as far as defining a variable for the XML string in the email - and I can pull out the variable and get rid of the £ sign with something like;

 

<%= escapeXmlStr(ctx.messageMetadata.MainCost.CostAmount).substr(1,10)%>

 

I'm stuck beyond this - any help appreciated.

Accepted Solutions (1)

Accepted Solutions (1)

Avatar

Avatar
Validate 1
MVP
Darren_Bowers
MVP

Likes

78 likes

Total Posts

263 posts

Correct Reply

84 solutions
Top badges earned
Validate 1
Affirm 50
Establish
Give Back 3
Applaud 25
View profile

Avatar
Validate 1
MVP
Darren_Bowers
MVP

Likes

78 likes

Total Posts

263 posts

Correct Reply

84 solutions
Top badges earned
Validate 1
Affirm 50
Establish
Give Back 3
Applaud 25
View profile
Darren_Bowers
MVP

27-04-2020

Hi @Tarquinius your post was a bit ambiguous. Did you want to remove the decimal part of the value (£1,509) or subtract 10 from the value (£1,499.10)? By the looks of your sample code you posted, its the first one. Anyway, here are both answers:

I am assuming your XML data looks something like this

 

<ctx>
  <messageMetadata>
    <MainCost>
      <CostAmount>£1,509.10</CostAmount>
    </MainCost>
  </messageMetadata>
</ctx>

 

(a) - uses String.split() to get everything in front of the decimal point.(output £1,509)

 

<%= escapeXmlStr(ctx.messageMetadata.MainCost.CostAmount.toString()).split(".")[0] %>

 

(b) - removes all non-numeric characters from the string, converts it to a float, subtracts 10, then sets the decimal places to two, converts back to a string and replaces the thousands separator back in (output £1,499.10)

 

<%= '£'+(parseFloat(escapeXmlStr(ctx.messageMetadata.MainCost.CostAmount.toString()).replace(/[^0-9.]/g, ''))-10).toFixed(2).toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,') %>

 

Answers (0)