【问题标题】:Haskell Get position from first digit in stringHaskell 从字符串中的第一个数字获取位置
【发布时间】:2014-04-24 18:16:12
【问题描述】:

我得到的是

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

唯一的问题是我不知道如何更好地完成工作。各位大神能帮帮我吗?

【问题讨论】:

  • 请不要破坏您自己的帖子。如果有必要删除它们,请标记以引起版主注意并要求删除。

标签: string haskell char position int


【解决方案1】:

你可以使用findIndex:

import Data.List

digitIndex :: String -> Int
digitIndex = maybe 0 id . findIndex isDigit

【讨论】:

    【解决方案2】:

    只是正常的递归:

    digitIndex :: String -> Int
    digitIndex [] = 0
    digitIndex (x:xs) = if isDigit x
                        then 1
                        else 1 + digitIndex xs
    

    如果第一个字符本身是数字,则函数返回 1 否则它只是添加 1 并将剩余的字符串 (xs) 传递给函数并继续递归。

    另请注意,当String 根本没有数字时,上述功能将无法正常工作。

    也不需要检查isDigit == True

    【讨论】:

    • 这不会产生好的输出,因为如果我填写: digitIndex "hel3lo" 它将输出 1 而不是 4(3 在字符串的第 4 位)
    • @user3434886 我理解错了你的问题,已经更新了解决方案。
    • 也许我的解释需要更清楚,但你解决了我的问题。谢谢!
    猜你喜欢
    • 2015-02-08
    • 1970-01-01
    • 2013-11-15
    • 2018-07-11
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多