测试字符串是否为数字

Ber*_*aud 4 erlang

如何测试字符串是否仅由数字组成?

YOU*_*LID 5

一种方法是将其转换为整数,如果失败,那么你就会知道它不是整数.

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)


Rob*_*loi 4

例如,使用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)

请注意,两种解决方案都会将空列表视为有效输入。