2015-10-02 78 views
0

作爲練習SML考試的一部分,我被要求寫一個函數來檢查一個字符'c'是否是一個數字。檢查一個字符是否是數字

我正在調查Char.ord函數,但它返回ASCII碼而不是字符中的整數本身,我似乎無法檢查類型。

我看了看周圍說使用datatype wrapper,但是在執行這個功能時;我沒有得到期望的結果。

謝謝:)

回答

2

你可以比較你得到的ASCII碼。如果它是一個數字,它將介於一系列值之間(我認爲是48 - 57)。用表中的號碼檢查你得到的號碼。

下面是一個例子函數:

fun check x = (ord x > 47) andalso (ord x < 58); 
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; 
相關問題