Warm tip: This article is reproduced from serverfault.com, please click

其他-如何在Haskell中将字符串的首字母大写并其余部分小写

(其他 - How to capitalize the first letter of a string and lowercase the rest in Haskell)

发布于 2013-11-20 10:27:03

我必须编写一个函数,该函数将字符串的第一个字母大写,并将字符串的其余部分小写(此字符串包含随机的大写或小写字母)。

到目前为止,我已经做到了:

capitalised :: String->String
capitalised [] = []
capitalised x
            | length x == 1 = map toUpper x
            | otherwise = capitalised (init x): map toLower (last x)

以及所有其他奇怪的功能,但我仍然无法弄清楚。

请帮忙!提前发送!

忘了提,问题指出我需要编写一个递归解决方案!

Questioner
donkey
Viewed
11
Nikita Volkov 2013-11-21 06:54:13

还记得aString只是它的类型同义词[Char]吗?在这里,我们利用它:

import qualified Data.Char as Char

capitalized :: String -> String
capitalized (head:tail) = Char.toUpper head : map Char.toLower tail
capitalized [] = []

这是一个递归版本:

capitalized :: String -> String
capitalized [] = []
capitalized (head:tail) = Char.toUpper head : lowered tail
  where
    lowered [] = []
    lowered (head:tail) = Char.toLower head : lowered tail