string conversion, format functions
Chris Pressey
cpressey@REDACTED
Wed Apr 23 23:16:55 CEST 2003
On Wed, 23 Apr 2003 16:52:45 -0400 (EDT)
HP Wei <hp@REDACTED> wrote:
> I have a string "123" and want to convert it to an integer
> or float, and vice versa.
>
> In python, I go to the string module and
> there are string.atoi(), string.atof(), and str(number).
> So, by habit, I went to string module doc in Erlang
> I could not find the counterparts of these functions. Where are they ?
They're BIFs (Built In Functions); they can also be found in the module
'erlang':
list_to_integer(String)
list_to_float(String)
integer_to_list(Integer)
etc.
btw, there is no integer_to_float; use coercion (Integer + 0.0 works)
Also, converting the string "123" into a float will fail.
> -------------------------
> B = 3.
>
> I want to form a string "0003".
> ** Can io:format generate such a printout ?
Hmmm... good question! If it can, it's not documented. (Why is there
no formatting code for integers in io:format?)
I tried
17> io:fwrite("~5.1.0f~n", [3 + 0.0]).
003.0
ok
18> io:fwrite("~5.0.0f", [3 + 0.0]).
** exited: {format,[{io,format,[<0.21.0>,"~5.0.0f",[3.00000]]},
{erl_eval,expr,3},
{erl_eval,exprs,4},
{shell,eval_loop,2}]} **
I also tried
20> io:fwrite("~5.0.0p~n", [3]).
3
ok
No luck...
> ** Can it be redirected to a string ?
Yes, see io_lib:format/2.
> ** If not, how do folks in Erlang world do this padding?
I guess the best way right now is:
23> string:right(integer_to_list(3), 4, $0).
"0003"
> thanks,
> hp
Hope that helps,
-Chris
More information about the erlang-questions
mailing list