Haskell程式檢查字串是否為數字
在Haskell中,我們可以使用read函式和Data.char庫來查詢給定的字串是否為數字。以下示例將使您清楚瞭解有效的數字值。
例如,121、12321和1221如果作為字串輸入,則為有效的數字值。
演算法
步驟1 − 定義使用reads函式的isNumeric函式
步驟2 − 程式執行將從main函式開始。main()函式控制整個程式。它被寫成main = do。在main函式中,字串被傳遞給isNumeric函式。函式的結果用於列印一條訊息,指示字串是否表示有效的數字值。
步驟3 − 變數名為“str”,正在初始化。它將儲存要檢查的字串,以確定它是否為數字。
步驟4 − 函式呼叫後,使用'putStrLn'語句將結果列印到控制檯。
示例1
在此示例中,isNumeric函式使用reads函式嘗試將輸入字串解析為數字值。reads函式返回一個對列表,其中每一對都包含一個已解析的值和解析後剩餘的字串。如果已解析的值是有效的數字值,則剩餘的字串應為空字串。
isNumeric :: String -> Bool
isNumeric str = case reads str :: [(Double, String)] of
[(_, "")] -> True
_ -> False
main :: IO ()
main = do
let str = "1234"
if isNumeric str
then putStrLn "The string represents a valid numeric value."
else putStrLn "The string does not represent a valid numeric value."
輸出
The string represents a valid numeric value.
示例2
在此示例中,isNumeric函式使用正則表示式模式來檢查輸入字串是否與數字值的語法匹配。模式"^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$"匹配以可選符號(+或-)開頭,後跟任意數量的數字(0-9),後跟可選的小數點和更多數字,以及可選的以字母e或E、可選符號(+或-)和更多數字指定的指數的字串。如果傳遞的字串與該模式匹配,則該函式返回True,表示輸入字串表示有效的數字值。否則,它返回False。
import Text.Regex.Posix
isNumeric :: String -> Bool
isNumeric str = str =~ "^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$"
main :: IO ()
main = do
let str = "1234"
if isNumeric str
then putStrLn "The string represents a valid numeric value."
else putStrLn "The string does not represent a valid numeric value."
輸出
The string represents a valid numeric value.
示例3
在此示例中,isNumeric函式使用正則表示式模式來檢查輸入字串是否與數字值的語法匹配。模式"^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$"匹配以可選符號(+或-)開頭,後跟任意數量的數字(0-9),後跟可選的小數點和更多數字,以及可選的以字母e或E、可選符號(+或-)和更多數字指定的指數的字串。如果傳遞的字串與該模式匹配,則該函式返回True,表示輸入字串表示有效的數字值。否則,它返回False。
import Data.Char
isNumeric :: String -> Bool
isNumeric [] = False
isNumeric str = all isDigit str ||
(head str == '-' || head str == '+') && all isDigit (tail str) ||
all isDigit (takeWhile isDigit str) &&
head (dropWhile isDigit str) == '.' &&
all isDigit (tail (dropWhile isDigit str))
main :: IO ()
main = do
let str = "1234"
if isNumeric str
then putStrLn "The string represents a valid numeric value."
else putStrLn "The string does not represent a valid numeric value."
輸出
The string represents a valid numeric value.
結論
在Haskell中,我們可以使用reads函式、正則表示式或使用Data.Char庫來檢查傳遞的字串是否為數字。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP