我得到的是
digitIndex :: String -> Int
digitIndex [] = 1
digitIndex (x:xs) =
if
isDigit x == True
then
-- Count list
else
-- Create list with x(x is not a digit)
我的想法是制作一张包含他正在传递的所有x的列表,所以当他传递一个数字时,他只需要计算一个数字,这将是数字的位置(当你计算+1时)
唯一的问题是我不知道如何更好地完成工作。你能帮我解决一下提示吗?
答案 0 :(得分:3)
您可以使用findIndex
:
import Data.List
digitIndex :: String -> Int
digitIndex = maybe 0 id . findIndex isDigit
答案 1 :(得分:0)
正常的递归:
digitIndex :: String -> Int
digitIndex [] = 0
digitIndex (x:xs) = if isDigit x
then 1
else 1 + digitIndex xs
如果第一个字符本身是一个数字,那么该函数返回1
,否则它只添加1
并将剩余的字符串(xs
)传递给函数,递归继续
另请注意,当String
根本没有号码时,上述功能无法正常工作。
同时检查isDigit == True
是不必要的。