您的位置:首页 > 其它

[Erlang]如何将整数转化为字符串

2014-11-03 16:55 351 查看
 需求:把一个数字指定长度输出例如: 
100000001
1200000012
120300001203
123456789123456789
123456701234567
方法一:使用io_lib:format来构造:方法说明见: 
%%使用Io:fromat来输出~F.P.PadModC.
%% ~F. ---> ~4. 宽度为F
%% P.  ---> . 无精度要求
%% Pad ---> 0 用Pad填充
%% Mod --->   没有控制序列修饰符指定
%% C   ---> B 控制为10进制输出
%%
format_integer_8_digit(Num) ->
lists:flatten(io_lib:format("~8..0B", [Num])).
 方法二:使用string:right/2来构造
%%使用string:right来构造
format_integer_8_digit2(Num)when is_integer(Num) ->
string:right(integer_to_list(Num),8,0);
format_integer_8_digit2(NumList) ->
string:right(NumList,8,0).
 
方法一1.如果给的数字大于8位就会输出* ,不符合需求2.不能指定填充的倍数,只能是写死为8,不灵活
方法二1.如果给的数字大于8位,会把数字从右边起至第8位截断,不符合需求:123456789--->23456578
所以只能自定义啦:方法三:自定义
format_integer_8_digit3(Number, Padding) when Number < 0 ->
[$- | format_integer_8_digit3(-Number, Padding - 1)];
format_integer_8_digit3(Number, Padding) ->
NumberList = integer_to_list(Number),
ZeroesNeeded = max(Padding - length(NumberList), 0),
lists:flatten([lists:duplicate(ZeroesNeeded, $0), NumberList]).
通过以上的方法可以引申出:如何将一个整数完整的转换为字符串(无位数限制)
 lists:flatten(io_lib:format("~B",[Num])).
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  erlang