检查一个字符是否为数字

Checking if a char is a digit

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

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

我环顾四周说要使用 datatype wrapper,但是在将其实现为函数时;我没有得到想要的结果。

谢谢:)

您可以使用比较运算符:

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

关于编辑:我不是 100% 确定您使用 datatype wrapper 的意思,但您也可以执行以下操作。使用 str 将 char 转换为字符串,然后使用 Int.fromString 尝试转换为 int。这 return 是 int option。然后,您可以在 return 值上使用模式匹配:

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

你可以比较得到的ASCII码。如果它是一个数字,它将在一系列值之间(我认为是 48 - 57)。使用 table.

中的号码代码检查您获得的号码

这是一个示例函数:

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