Add Leading Zeros

I have strings that are storing a two digit number (i.e. 00, 01, 02, etc) but I need to add another leading zero (i.e. 000, 001, 002). I don’t want to simply concatenate a 0 on the front in case I have values that end up being three digits.

Should be doable with sprintf() string function.

$value = “01”.
I’ve tried $value.sprintf("%03d", “0”) and several other similar things but it doesn’t seem to work.

It looks like the format and the value to format are switched around. The sprintf() method is to be called on the format string, like so:

"%03d".sprintf(parseInt($value))

Note that the value passed in needs to be a number and not a string, which is why I used parseInt().

Thank you @tstack! That worked!

Here is an alternative solution if you need something that works for any value.
Example with padding with six zeros:
I have chosen to store the padding value in pipeline params as pad6 = "000000"

$value.toString().length < 6 ? _pad6.substring(0, _pad6.length - $value.toString().length) + $value.toString() : $value.toString()
1 Like

Note that there is a .repeat() method on strings that you can use to generate these types of strings.

Thanks @tstack
So this would be an alternative solution:

$value.toString().length < 6 ? '0'.repeat(6 - $value.toString().length) + $value : $value

It feels a more sleek than my existing padding :slight_smile:

1 Like

FWIW, I saw @dwhansen-cbg 's post this morning, and my immediate go-to answer was algorithmically identical to yours! Though… I’m much more of a C++ guy so your JavaScript was a lot more sleek than what I had in mind! :laughing:

(“0” + $value).slice(-3)

.slice(-3) will take the last 3 characters in the string

2 Likes