您的位置:首页 > 其它

从以空格为分隔符的整数字符串中分离出所有整数的Erlang程序

2010-04-06 16:45 295 查看
目的如题. 主函数是split_integer/1, 这里用到了Erlang提供的尾递归功能. 存储到文件me.erl中

-module(me).
-compile(export_all).

split_integer(L) ->
L1=lists:reverse(L),
split_integer_a([],L1,[]).
split_integer_a([],[],Result) -> Result;
split_integer_a(R1,[],Result) -> [list_to_integer(R1)|Result];
split_integer_a(R1,[H|T],Result) ->
if
H==32 ->
if
R1==[] -> split_integer_a([],T,Result);
true -> split_integer_a([],T,[list_to_integer(R1)|Result])
end;
true -> split_integer_a([H|R1],T, Result)
end.

进入erlang shell:
1> c(me).
{ok,me}
2> me:split_integer("1 2 3 4 5 6789").
[1,2,3,4,5,6789]

练习题: 如果问题改为用空格分开的是小数和整数的混合字符串又该如何? 或者分隔符是别的呢? 动动脑筋哟 (:

利用Erlang标准库中string模块的tokens/2函数, 可以使得上面的任务变得非常简单.

split_integer(String,SeparatorList) ->
lists:map(fun(SubString)->list_to_integer(SubString) end, string:tokens(String,SeparatorList)).
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐