gpt4 book ai didi

string - 如何在 Haskell 中检查字符串的每个字符

转载 作者:行者123 更新时间:2023-12-02 20:14:40 25 4
gpt4 key购买 nike

我有一个检查用户名是否有效的函数的作业。允许的字符包括下划线、字母和数字。我不允许使用索引 (!!) 和长度

到目前为止我的代码:

isValid' :: Char -> Bool
isValid' x
| x == '_' = True
| x `elem` ['0'..'9'] = True
| x `elem` ['a'..'z'] = True
| x `elem` ['A'..'Z'] = True
| otherwise = False

isValidUsername :: [Char] -> Bool
isValidUsername x
| map isValid' x = True
| otherwise = False

我想对我放入 isValidUsername 的字符串的所有字符运行 isValid 函数。例如:

isValidUsername "MyUsername_123" 应返回 True

isValidUsername "not@v@lidusern@me* *2" 应返回 False

我只是不知道如何遍历字符串中的所有字符。

最佳答案

如果您希望所有元素都满足isValid'函数,您可以使用all :: (a -> Bool) -> [a] -> Bool函数,因此您可以将函数重写为:

isValidUsername :: [Char] -> Bool
isValidUsername x = all isValid' x

或更短:

isValidUsername :: [Char] -> Bool
isValidUsername = all isValid'

请注意,这里意味着空字符串 "" 也是有效的用户名,因为对于空字符串,所有字符(没有字符)都是在字母数字范围内。

关于string - 如何在 Haskell 中检查字符串的每个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52689301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com