文字列に含まれる単語の最初の文字を大文字にする
30分プログラム、その625。エロと風俗情報満載 どう抜く?をやってみよう。
要するに、"hello world"を与えたときに"Hello World"を返すプログラムを作ればいいんだよね。
ライブラリを探せばずばりそのものの関数がありそうな気がしたので、なるべくライブラリの関数を使わない方向でがんばってみた。toUpperのコードとか割りとうまく書けたと思う。
使い方
$ ghc --make capitalize.hs $ ./capitalize hoge Hoge $ ./capitalize "hello world" Hello World
ソースコード
import System toUpper :: Char -> Char capitalizeWord :: String -> String capitalize :: String -> String toUpper c = case lookup c table of Just d -> d Nothing -> c where table = zip ['a'..'z'] ['A'..'Z'] capitalizeWord [] = [] capitalizeWord (c:cs) = toUpper c:cs capitalize s = unwords $ map capitalizeWord $ words s main = do args <- getArgs mapM_ putStrLn $ map capitalize args