查找以列表中给定字母开头的单词

时间:2012-02-06 12:50:22

标签: haskell

我试图找到以字符串列表中的特定字母开头的单词。用户将输入单词列表和起始字母。例如,像:

  

“桌上铅笔椅书桌笔”“p”

因此,应显示以p开头的字词,在本例中为penpencil。我的第一步是使用words函数将字符串拆分为字符串列表。然后我如何找到每个单词的首字母?函数的类型如下:

--------------Find words Starting with a given letter------------------

findWords :: String -> Char -> [String]

3 个答案:

答案 0 :(得分:5)

您使用filter

foo string = filter startsWithP (words string)

然后你需要定义

startsWithP :: String -> Bool

更有用的是通用变体

startsWith :: String -> Char -> Bool

可以像"foo" `startsWith` 'f'一样使用。

答案 1 :(得分:4)

提示#1:在Haskell中,String被定义为Chars的列表,因此所有列表函数都可用。

答案 2 :(得分:1)

因为你真的想知道以给定字符串开头的字符串(根据你的帖子)我会使用isPrefixOf函数:

filter ("p" `isPrefixOf`)  ["cats", "dogs", "poor boys"]

据我记得,该函数在Data.List中。