检查一个字符是否为数字
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);
作为 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);