如果没有列出的项目也无法表示字符,那么erlang会将列出的数字转换为字符,我遇到问题。避免将数字转换为erlang中的字符
我正在写一个函数来分隔一个正整数中的所有数字,并将它们放在一个列表中,例如:digitize(123)
应该返回[1,2,3]
等等。
下面的代码工作正常,但在列表中只包含8的和/或9的的:
digitize(_N) when _N =:= 0 -> [];
digitize(_N) when _N > 0 -> _H = [_N rem 10], _T = digitize(_N div 10), _T ++ _H.
例如:与其digitize(8)
返回[8]
,它给我的非图形字符"\b"
和digitize(89)
回报"\b\t"
。这只适用于数字8和9,并且当它们单独放置在列表中时。例如,digitize(891)
将正确返回[8,9,1]
。
我意识到这个原因,但我怎样才能解决它,而不会改变我的结果? (例如:在[[],[8]]
的结果中包含digitize(8)
的空白列表)
可能重复的[我可以禁用打印列表的小整数作为字符串在Erlang壳?](http://stackoverflow.com/questions/2348087/can-i-disable-printing-lists-of-small-integers -as-strings-in-erlang-shell) – legoscia 2014-09-22 16:32:58
另请参阅[此答案](http://stackoverflow.com/a/7372958/113848)。 – legoscia 2014-09-22 16:33:51
是的,你实际上没有问题。这是Erlang中字符串和列表含糊不清的结果。 “\ b \ t”与[8,9]相同,只在shell中打印不同(或者在格式调用中使用〜p时)。 – 2014-09-22 16:37:17