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

前端 未结 7 1303
醉酒成梦
醉酒成梦 2020-12-12 16:40

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

7条回答
  •  庸人自扰
    2020-12-12 17:22

    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")

提交回复
热议问题