我有一个函数需要获取列表中的所有Integer并将它们显示为字符串,即“ Beans 1.29”应返回129。我的函数如下
multDigitsRecTest :: String -> String
multDigitsRecTest [] = ""
multDigitsRecTest (x:xs)
| isDigit x = show (digitToInt (x), multDigitsRecTest xs)
| otherwise = multDigitsRecTest xs
似乎返回带有其他奇怪内容的整数。有什么方法可以将int作为字符串返回吗?
答案 0 :(得分:3)
您基本上在这里要过滤数字字符。因此,您可以将其实现为:
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, \"\")")
。