How to convert an Int to a String of a given length with leading zeros to align?

formatting, int, scala, string

Solution

The Java library has pretty good (as in excellent) number formatting support which is accessible from StringOps enriched String class:

scala> "%07d".format(123)
res5: String = 0000123

scala> "%07d".formatLocal(java.util.Locale.US, 123)
res6: String = 0000123

Edit post Scala 2.10: as suggested by fommil, from 2.10 on, there is also a formatting string interpolator (does not support localisation):

val expr = 123
f"$expr%07d"
f"${expr}%07d"

Edit Apr 2019:

- If you want leading spaces, and not zero, just leave out the `0` from the format specifier. In the above case, it'd be `f"$expr%7d"`.Tested in 2.12.8 REPL. No need to do the string replacement as suggested in a comment, or even put an explicit space in front of `7` as suggested in another comment.

- If the length is variable, `s"%${len}d".format("123")`

Problem

How can I convert an `Int` to a 7-character long `String`, so that `123` is turned into `"0000123"`?

Original source

Related problems