String 如何在Haskell中打印相同的字符n次

String 如何在Haskell中打印相同的字符n次,string,haskell,String,Haskell,我想打印一个字符,在一个字符串下面加n次下划线,其中n是Haskell中字符串的长度 我该怎么做 我的字符串是:“可用字符(x)” 我想在句子下面加一个字符,它的长度应该和“可用字符(x)”的长度完全相同。但是x是一个整数,所以它可以是“1”或“10”或“1000”等等。。所以长度是可变的。我得到了长度,但我不知道如何打印字符,只要字符串是 明白了 replicate n 'charHere' 例如,如果要将字符'-'重复12次: replicate 12 '-' 使用: 这将为您提供一个n

我想打印一个字符,在一个字符串下面加n次下划线,其中n是Haskell中字符串的长度

我该怎么做

我的字符串是:“可用字符(x)” 我想在句子下面加一个字符,它的长度应该和“可用字符(x)”的长度完全相同。但是x是一个整数,所以它可以是“1”或“10”或“1000”等等。。所以长度是可变的。我得到了长度,但我不知道如何打印字符,只要字符串是

明白了

replicate n 'charHere'
例如,如果要将字符
'-'
重复12次:

replicate 12 '-'
使用:

这将为您提供一个n倍于字符“-”的字符串,其中n是输入字符串的长度。这与:

underline = map (const '-')
然后可以这样使用它(例如,如果
yourString=“Available Chars(111)”

一种可能性是(重新)实施
复制
,例如:

replicate' :: Int -> a -> [a]                
replicate' n x = if (n <= 0) then [] else (x : replicate (n-1) x) 
replicate':Int->a->[a]

replicate'nx=if(n参见
replicate
函数,注意
String
只是
[Char]
的同义词,我看到了它,但我找不到任何示例来了解如何真正使用它……:(@zelleb这是非常基本的,所以如果你无意中发现了类似的东西,也许你应该这样做。你的意思可能是
map(const'-'))
我怀疑这种无点风格的使用超出了OP的能力;这个答案在有点风格中会更有帮助,因为它关注的是
复制的工作方式。
> putStrLn yourString >> putStrLn (underline yourString)
Available Chars (111)
---------------------
replicate' :: Int -> a -> [a]                
replicate' n x = if (n <= 0) then [] else (x : replicate (n-1) x)