简体   繁体   中英

How to print the same char n times in Haskell

I would like to print a char underlining a String n times, with n the length of the String in Haskell.

How should I do this?

My String is: "Available Chars (x)" and I want to have a char underlining that sentence, which should have exactly the same length as the "Available Chars (x)". But x is an int, so it could be "1" or "10" or "1000" etc.. so the length is variable. I got the length but i didnt know how to print that char as long as the string is...

Use replicate :

underline :: String -> String
underline = flip replicate '-' . length

This will give you a string which is n times the character '-' where n is the length of the input string. It is the same as:

underline = map (const '-')

You can then use it like this (if for example yourString = "Available Chars (111)" ):

> putStrLn yourString >> putStrLn (underline yourString)
Available Chars (111)
---------------------

got it!

replicate n 'charHere'

for example, if you want to repeat the char '-' 12 times:

replicate 12 '-'

A possibility is to (re)implement replicate , for instance as follows,

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM