基本上我正在尝试扫描字符串以查找包含字符的单词,并计算找到具有该字符的单词数。我只是想知道是否有办法检查一个单词是否包含一个字符。
目前的代码如下:
let w = "Hello i'm kind of new to Haskell, but so far it's great!"
length $ filter (== 'n') w
这会在字母n上出现任何问题,如果在一个单词中有2个n它会将其计为2而不是1,我基本上想要检查单词是否包含字母输入然后得到长度。< / p>
由于
答案 0 :(得分:9)
您可以使用elem
:
> 'n' `elem` w
True
如果以前没有见过它,为了将来参考,实际上有一个搜索引擎会根据Haskell的类型查找函数。如果我在hoogle上搜索Char -> String -> Bool
或String -> Char -> Bool
,则elem
是第二个结果。这可以是一个非常强大的工具,用于发现您不知道的功能。
更仔细地阅读您的问题并准确地了解您想要做什么,您可以非常轻松地合并words
,elem
和filter
以计算字符串中的字数包含特定字母的内容:
wordsWithLetter :: Char -> String -> Int
wordsWithLetter c w
= length
$ filter (c `elem`)
$ words w
此处filter (c `elem`)
将删除所有不包含c
的字词,因此使用length
计算剩余字数会告诉您该字母包含多少字。