'show'返回我想要的和一个奇怪的字符串



我有一个函数,需要获取列表中的所有整数并将它们显示为字符串,即"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)。由于IntString都是Show类型类的成员。元组也是如此。因此,它将打印(2, "(5, "")")例如。

相关内容

最新更新