如何将一个句子(String)分解成一个列表([String])?

Ale*_*lex 1 haskell

我有以下代码:

    realWord :: String -> String
    realWord s = if elem (map toLower s) ["the","a","of","in","at"] then "" else (map toLower s)
Run Code Online (Sandbox Code Playgroud)

这是为了测试像"教父"这样的字符串是否包含任何数量的琐碎单词,例如"the".然而,当我把"教父"放入函数时,显然它给出了这个字符串不包含在列表中,并再次吐出句子.

如何将"教父"这句话打破成单词列表,我可以单独测试然后再将它们重新组合在一个句子中?

输入"教父"的所需输出是"教父".

Nik*_* B. 9

您可以使用Prelude功能wordsunwords:

realWord = unwords . filter (`notElem` trivial) . words . toLower
    where trivial = ["the","a","of","in","at"]
Run Code Online (Sandbox Code Playgroud)

  • 这也是一个很好的案例,[Hoogle](http://www.haskell.org/hoogle/)可以帮助您找到所需的标准Prelude函数,通常是搜索所需的函数类型(`:: String - > [String]`在这种情况下)`words`非常接近搜索结果的顶部([here](http://www.haskell.org/hoogle/?hoogle=%3A%3A+String+-% 3E +%5BString%5D).) (3认同)