我应该有一个[Char]
输入并输出[Char]
,但是从输入中将所有字符除空格外加倍两次。
我可以将每个字符加倍,包括空格,但不知道如何排除空格。
echo :: [Char] -> [Char]
echo x = concatMap (replicate 2) x
这将花费"Hello World"
并输出"HHeelloo WWoorrlldd"
(2个空格)
但我希望它输出"HHeelloo WWoorrlldd"
(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 -}