Haskell 程式將字串型別變數轉換為整數
在 Haskell 中,我們將使用使用者定義函式 stringToInt 以及 read 和 readMaybe 函式將字串型別變數轉換為整數。這也可以使用模式匹配和遞迴來實現。在第一個示例中,我們將使用 (stringToInt str = readMaybe str) 函式,在第二個示例中,我們將使用 (stringToInt "" = Nothing; stringToInt ('-':xs) = negate <$>; stringToInt xs; stringToInt xs = case reads xs of [(n, "")] -> Just n and _ -> Nothing)。
演算法
步驟 1 − 使用 readMaybe 函式定義 stringToInt 函式
步驟 2 − 程式執行將從 main 函式開始。main() 函式控制整個程式。它被寫成 main = do。
步驟 3 − 初始化名為“inputStr”的變數。它將儲存要轉換為相應整數值的字串。
步驟 4 − 呼叫 stringToInt 函式並將 inputStr 傳遞給它。
步驟 5 − 函式呼叫後,使用 'putStrLn' 語句將結果整數列印到控制檯。
示例 1
在此示例中,定義了 stringToInt 函式,該函式接受一個 String 引數並返回一個 Maybe Int 值。然後,它在 main 函式中使用此函式從使用者讀取數字並將其列印到控制檯。這也可以使用 read 函式實現。
import Text.Read (readMaybe) stringToInt :: String -> Maybe Int stringToInt str = readMaybe str main :: IO () main = do let inputStr = "345" case stringToInt inputStr of Just n -> putStrLn $ "Integer value: " ++ show n Nothing -> putStrLn "Invalid input"
輸出
Integer value: 345
示例 2
在此示例中,定義了使用者定義函式 stringToInt,使用 read 和 isDigit 函式將字串變數轉換為 int。
import Data.Char (isDigit) stringToInt :: String -> Maybe Int stringToInt str | all isDigit str = Just (read str) | otherwise = Nothing main :: IO () main = do let inputStr = "345" case stringToInt inputStr of Just n -> putStrLn $ "Integer value: " ++ show n Nothing -> putStrLn "Invalid input"
輸出
Integer value: 345
示例 2
在此示例中,模式匹配和遞迴用於處理輸入字串的不同情況。第一個模式匹配空字串並返回 Nothing。第二個模式匹配以連字元 (-) 開頭的字串,並遞迴地將 stringToInt 應用於其餘字元,然後將 negate 函式應用於生成的 Maybe Int 值。第三個模式使用 reads 函式嘗試將輸入字串解析為 Int,如果解析成功則返回包含已解析整數的 Just 值,否則返回 Nothing。
stringToInt :: String -> Maybe Int stringToInt "" = Nothing stringToInt ('-':xs) = negate <$> stringToInt xs stringToInt xs = case reads xs of [(n, "")] -> Just n _ -> Nothing main :: IO () main = do let inputStr = "345" case stringToInt inputStr of Just n -> putStrLn $ "Integer value: " ++ show n Nothing -> putStrLn "Invalid input"
輸出
Integer value: 345
結論
字串到整數轉換是將表示整數值的字元字串轉換為整數資料型別的過程。在包括 Haskell 在內的許多程式語言中,字串用於表示文字資料,而整數用於表示數值資料。將字串轉換為整數允許程式對字串表示的數值執行數學運算或比較。在 Haskell 中,使用使用者定義的 stringToInt 函式以及 read 和 readMaybe 函式將字串變數轉換為 int。還可以使用遞迴和模式匹配。