Haskell相当于包含

Jor*_*dan 1 haskell ghc ghci

基本上我正在尝试扫描字符串以查找包含字符的单词并计算找到具有该字符的单词数.我只是想知道是否有办法检查一个单词是否包含一个字符.

到目前为止的代码如下:

let w = "Hello i'm kind of new to Haskell, but so far it's great!"
length $ filter (== 'n') w
Run Code Online (Sandbox Code Playgroud)

这会在字母n上出现任何问题,如果在一个单词中有2个n,则会将其计为2而不是1,我基本上想要检查单词是否包含字母输入然后获取长度.

谢谢

bhe*_*ilr 9

你可以使用elem:

> 'n' `elem` w
True
Run Code Online (Sandbox Code Playgroud)

如果您以前没有看到它,为了将来参考,实际上有一个搜索引擎将根据Haskell的类型查找函数.如果我搜索Char -> String -> BoolString -> Char -> Boolhoogle上搜索,那么这elem是第二个结果.这可以是一个非常强大的工具,用于发现您不知道的功能.


读你的问题有点接近,准确地实现你想要做什么,你可以结合words,elem以及filter很容易地计算中包含特定字母串词的数量:

wordsWithLetter :: Char -> String -> Int
wordsWithLetter c w
    = length
    $ filter (c `elem`)
    $ words w
Run Code Online (Sandbox Code Playgroud)

这里filter (c `elem`)将删除所有不包含的单词,c因此使用剩余单词计数会length告诉您该单词包含多少单词.