【发布时间】:2014-02-11 11:36:15
【问题描述】:
我对字符串操作库知之甚少,我想自己在 Haskell 中编写这些简单的转换。我很惊讶我能生产多少样板。我怎样才能简化它?使用正则表达式会产生最易读的代码吗?
期望的输出:
*Main> prettyCamel "foo-bar-example" “fooBar 示例” *Main> prettyCapitals "foo-bar-example" “FooBar 示例”代码:
import Data.Char
prettyCapitals = foldr1 (++) . (map capitalize) . splitString
prettyCamel = foldr1 (++) . camelCase . splitString
capitalize (x:xs) = toUpper x : xs
camelCase [] = []
camelCase (x:xs) = x : (map capitalize xs)
splitString :: String -> [String]
splitString = foldr (splittingAdd (== '-')) []
splittingAdd splitPredicate char words =
if splitPredicate char
then "":words
else (char : headOrEmpty words) : tailOrEmpty words
headOrEmpty [] = ""
headOrEmpty (x:xs) = x
tailOrEmpty [] = []
tailOrEmpty (x:xs) = xs
【问题讨论】:
-
正则表达式根本不是haskell的惯用代码。
标签: haskell