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

目的如题. 主函数是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)).

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值