检查char是否为数字

时间:2015-10-02 11:47:19

标签: sml smlnj

作为练习SML考试的一部分,我被要求编写一个函数,用于检查字符“c”是否为数字。

我正在调查Char.ord函数,但是它返回ASCII代码,而不是字符中的整数本身,我似乎无法检查类型。

我环顾四周说要使用datatype wrapper,但是当把它实现到一个函数中时;我没有得到理想的结果。

谢谢:)

2 个答案:

答案 0 :(得分:2)

您可以使用比较运算符:

fun is_digit c = #"0" <= c andalso c <= #"9";

编辑时:我并非100%确定使用datatype wrapper的含义,但您也可以执行以下操作。使用str将char转换为字符串,然后使用Int.fromString尝试转换为int。这将返回int option。然后,您可以在返回值上使用模式匹配:

fun is_digit c =
    case Int.fromString (str c) of
        NONE => false
        | _ =>true;

答案 1 :(得分:2)

您可以比较您获得的ASCII码。如果它是一个数字,它将在一系列值之间(我认为48-57)。使用表格中的数字代码检查您获得的号码。

这是一个示例函数:

fun check x = (ord x > 47) andalso (ord x < 58);