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。还可以使用递归和模式匹配。

更新于: 2023年4月20日

674 次浏览

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告

© . All rights reserved.