这是我的任务:编写一个函数:
onlyDigits :: String -> String
Run Code Online (Sandbox Code Playgroud)
从字符串中去除所有非数字字符(例如,onlyDigits“ ac245d62”为“ 24562”)。
我有这个:
onlyDigits :: String -> String
onlyDigits a = [ (not)isAlpha b | b <- a ]
Run Code Online (Sandbox Code Playgroud)
但我不能编译它
谁能看到我哪里出问题了?
通过写
(not) isAlpha b
Run Code Online (Sandbox Code Playgroud)
您将not两个参数应用到isAlpha和b,这可能就是编译器抱怨的原因。
如果您解决了这个小错误,现在写:
onlyDigits :: String -> String
onlyDigits a = [ not (isAlpha b) | b <- a ]
Run Code Online (Sandbox Code Playgroud)
您仍然会收到错误消息,因为这会创建一个Bools 列表!
您可能想要的是:
onlyDigits :: String -> String
onlyDigits a = [ b | b <- a, not $ isAlpha b ]
Run Code Online (Sandbox Code Playgroud)
这将需要的所有元素b的a,即满足条件not (isAlpha b)。
您还可以使用该filter功能并具有无点功能:
onlyDigits :: String -> String
onlyDigits = filter (not.isAlpha)
Run Code Online (Sandbox Code Playgroud)
甚至更好:
onlyDigits :: String -> String
onlyDigits = filter isDigit
Run Code Online (Sandbox Code Playgroud)
只保留数字!
| 归档时间: |
|
| 查看次数: |
403 次 |
| 最近记录: |