【发布时间】:2010-12-13 00:21:26
【问题描述】:
我一直在玩弄原子的分裂,但遇到了字符串的问题。输入数据总是由一些字母和一些数字组成的原子,例如ms444、r64 或min1。由于函数lists:splitwith/2 接受一个列表,因此原子首先被转换为一个列表:
24> lists:splitwith(fun (C) -> is_atom(C) end, [m,s,4,4,4]).
{[m,s],[4,4,4]}
25> lists:splitwith(fun (C) -> is_atom(C) end, atom_to_list(ms444)).
{[],"ms444"}
26> atom_to_list(ms444).
"ms444"
我想将字母与数字分开,并且在使用列表时已成功做到这一点,但是由于我从原子开始,因此我得到了一个“字符串”作为结果放入我的 splitwith 函数中。 ..
它是将列表中的每个项目解释为字符串还是发生了什么?
【问题讨论】:
-
你能澄清你的原始字符串的结构吗?固定宽度,总是一组连续的数字,等等。
-
这是一个糟糕的原子用例。除非您发现自己处于根本无法控制输入内容的情况,否则需要“拆分原子”表明其余代码存在结构性问题。这就是为什么它们一开始就被称为“原子”。至少非常这些应该是元组:
'ms444'应该是{ms, 444}。
标签: erlang