Haskell从字符串中的第一个数字获取位置

时间:2014-03-18 20:11:52

标签: string haskell char position int

我得到的是

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时)

唯一的问题是我不知道如何更好地完成工作。你能帮我解决一下提示吗?

2 个答案:

答案 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是不必要的。