如何测试字符串是否仅由数字组成?
答案 0 :(得分:5)
一种方法是将其转换为整数,如果失败,那么你就会知道它不是一个整数。
is_integer(S) ->
try
_ = list_to_integer(S),
true
catch error:badarg ->
false
end.
或者您可以只检查所有数字,但您必须检查空列表的边缘情况:
is_integer("") ->
false;
is_integer(S) ->
lists:all(fun (D) -> D >= $0 andalso D =< $9 end, S).
答案 1 :(得分:4)
例如,使用re模块:
1> re:run("1234a56", "^[0-9]*$").
nomatch
2> re:run("123456", "^[0-9]*$").
{match,[{0,6}]}
或者,使用列表理解:
[Char || Char <- String, Char < $0 orelse Char > $9] == [].
请注意,两个解决方案都会考虑空列表有效输入。
答案 2 :(得分:2)
答案 3 :(得分:2)
not lists:any(fun(C)->C < $0 or C > $9 end, YourString).
在制作中,我同意list_to_integer,因为它可能更好地进行了优化。我不确定'any'与'all'是否存在不同的遍历特征 - 你可以用另一个来实现它们中的每一个,但它们可能都是用C实现的。