Haskell-回显除空格以外的所有字符

时间:2019-03-04 16:47:32

标签: haskell

我应该有一个[Char]输入并输出[Char],但是从输入中将所有字符除空格外加倍两次。

我可以将每个字符加倍,包括空格,但不知道如何排除空格。

echo :: [Char] -> [Char]
echo x = concatMap (replicate 2) x

这将花费"Hello World"并输出"HHeelloo WWoorrlldd"(2个空格)

但我希望它输出"HHeelloo WWoorrlldd"(1个空格)

任何想法都会有所帮助!

编辑:感谢所有有用的想法!我已经能够弄清楚如何正确执行此操作!

1 个答案:

答案 0 :(得分:4)

好吧,所以您发现replicate 2并没有完全按照您想要的去做,因为它在不需要时会复制空格。因此,让我们编写一个新函数,在决定要做什么之前检查它是否为空格,嘿?您可以使用模式匹配来检查您的输入Char是否为空格,如下所示:

notReplicate2 :: Char -> [Char]
notReplicate2 ' ' = {- exercise -}
notReplicate2 anythingElse = {- exercise -}

或者,如果您要像换行符,制表符,垂直制表符等一样处理单个空格字符,则可以在此骨架上放一些肉:

import Data.Char

notReplicate2 :: Char -> [Char]
notReplicate2 c | isSpace c = {- exercise -}
                | otherwise = {- exercise -}