一种方法是将其转换为整数,如果失败,那么你就会知道它不是整数.
is_integer(S) ->
try
_ = list_to_integer(S),
true
catch error:badarg ->
false
end.
Run Code Online (Sandbox Code Playgroud)
或者您可以只检查所有数字,但您必须检查空列表的边缘情况:
is_integer("") ->
false;
is_integer(S) ->
lists:all(fun (D) -> D >= $0 andalso D =< $9 end, S).
Run Code Online (Sandbox Code Playgroud)
例如,使用re模块:
1> re:run("1234a56", "^[0-9]*$").
nomatch
2> re:run("123456", "^[0-9]*$").
{match,[{0,6}]}
Run Code Online (Sandbox Code Playgroud)
或者,使用列表理解:
[Char || Char <- String, Char < $0 orelse Char > $9] == [].
Run Code Online (Sandbox Code Playgroud)
请注意,两种解决方案都会将空列表视为有效输入。