haskell - 'show' 返回我想要的东西和一个奇怪的字符串
问题描述
我有一个函数需要获取列表中的所有整数并将它们显示为字符串,IE“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-tuple (Int, String)
。因为两者Int
都是类型类String
的成员Show
。元组也是如此。例如,它将打印(2, "(5, \"\")")
。
推荐阅读
- console - 谷歌播放控制台名称错误
- c++ - C++ - 在堆上分配更大的数组
- powershell - 用于初始化和格式化磁盘的 DSC
- c# - Lambda 包含限制列
- c# - TextBox AutoCompleteStringCollection 建议
- python - Odoo KeyError:mail.alias.alias_domain
- javascript - 固定水平滚动表内的行
- java - 滚动列表视图时文本视图中的数据切换
- android-studio - 很多工具都不见了
- docker - 如何从本地 dhcp 服务器发布的 IP 访问托管在 Openshift 集群中的网站