作爲練習SML考試的一部分,我被要求寫一個函數來檢查一個字符'c'是否是一個數字。檢查一個字符是否是數字
我正在調查Char.ord
函數,但它返回ASCII碼而不是字符中的整數本身,我似乎無法檢查類型。
我看了看周圍說使用datatype wrapper
,但是在執行這個功能時;我沒有得到期望的結果。
謝謝:)
作爲練習SML考試的一部分,我被要求寫一個函數來檢查一個字符'c'是否是一個數字。檢查一個字符是否是數字
我正在調查Char.ord
函數,但它返回ASCII碼而不是字符中的整數本身,我似乎無法檢查類型。
我看了看周圍說使用datatype wrapper
,但是在執行這個功能時;我沒有得到期望的結果。
謝謝:)
你可以比較你得到的ASCII碼。如果它是一個數字,它將介於一系列值之間(我認爲是48 - 57)。用表中的號碼檢查你得到的號碼。
下面是一個例子函數:
fun check x = (ord x > 47) andalso (ord x < 58);
你可以使用比較操作:
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;