[erlang-questions] integer-string conversions.

Jachym Holecek freza@REDACTED
Sat Apr 9 01:21:07 CEST 2011


# Peter W. Morreale 2011-04-08:
> I bet this has come up a lot, however I can't find anything on the web
> that is appropriate...   (Nor am I seeing it in the erlang doc...)
> 
> Need to convert an integer to a string, with a field width and
> precision, such that:
> 
>   2 --> "02" 
> 
> ie: right-justified and padded with a leading zeros, depending upon
> field width. 
> 
> How do I do this?

Thusly:

  17> io_lib:format("~2.10.0B~n", [2]).
  [["0","2"]] %% Flatten me if you have to (which is very rarely).

Personally, I prefer to use a utility function like this:

  make_two(N) when N < 10 -> %% [1]
      [$0 | integer_to_list(N)];
  make_two(N) ->
      integer_to_list(N).

just because resulting code is clearer than esoteric formatting syntax IMO.
Similar functions are defined for other field widths that are needed, it's
only a few of them really.

HTH,
	-- Jachym

[1] Yeah, that guard isn't quite exhaustive, you can make it more paranoid
    if you like.



More information about the erlang-questions mailing list