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:
Note that the value passed in needs to be a number and not a string, which is why I used
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()
Note that there is a
.repeat() method on strings that you can use to generate these types of strings.
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
(“0” + $value).slice(-3)
.slice(-3) will take the last 3 characters in the string