我有一个函数,需要获取列表中的所有整数并将它们显示为字符串,即"Beans 1.29"应该返回129。我的函数如下
multDigitsRecTest :: String -> String
multDigitsRecTest [] = ""
multDigitsRecTest (x:xs)
| isDigit x = show (digitToInt (x), multDigitsRecTest xs)
| otherwise = multDigitsRecTest xs
它似乎返回了带有其他奇怪东西的整数。有没有办法只返回 int 作为字符串?
你基本上在这里想要过滤数字字符。因此,您可以将其实现为:
import Data.Char(isDigit)
multDigitsRecTest :: String -> String
multDigitsRecTest =filter isDigit
例如:
Prelude Data.Char> multDigitsRecTest "Beans 1.29"
"129"
它之所以是打印噪音,是因为您称show (digitToInt x, multDigitsRecTest xs)
。这是一个 2 元组(Int, String)
。由于Int
和String
都是Show
类型类的成员。元组也是如此。因此,它将打印(2, "(5, "")")
例如。