我想打印一個字符串,強調字符串n次,其中n是Haskell中字符串的長度。如何在Haskell中打印n次相同的字符
我該怎麼做?
我的字符串是:「可用的字符(x)」 ,我希望有一個字符強調該句子,它應該具有與「可用字符(x)」完全相同的長度。但是x是一個整數,所以它可以是「1」或「10」或「1000」等等,所以長度是可變的。我得到了長度,但我不知道如何打印該字符只要字符串是...
我想打印一個字符串,強調字符串n次,其中n是Haskell中字符串的長度。如何在Haskell中打印n次相同的字符
我該怎麼做?
我的字符串是:「可用的字符(x)」 ,我希望有一個字符強調該句子,它應該具有與「可用字符(x)」完全相同的長度。但是x是一個整數,所以它可以是「1」或「10」或「1000」等等,所以長度是可變的。我得到了長度,但我不知道如何打印該字符只要字符串是...
使用replicate
:
underline :: String -> String
underline = flip replicate '-' . length
這會給你一個字符串,它是n次的字符' - '其中n是輸入字符串的長度。這是一樣的:
underline = map $ const '-'
然後,您可以使用它像這樣(舉例來說,如果yourString = "Available Chars (111)"
):
> putStrLn yourString >> putStrLn (underline yourString)
Available Chars (111)
---------------------
你可能是指'map(const' - ')' – user2407038 2014-10-28 21:20:54
'map $ const'-'' – 2014-10-28 21:47:52
我懷疑這種使用無點式風格超出了OP的能力;這個答案對於有意義的風格會更有幫助,並側重於「複製」的工作原理。 – luqui 2014-10-28 22:16:36
明白了!
replicate n 'charHere'
例如,如果你要重複的字符'-'
12倍:
replicate 12 '-'
一種可能性是(重新)實施replicate
,例如如下,
replicate' :: Int -> a -> [a]
replicate' n x = if (n <= 0) then [] else (x : replicate (n-1) x)
請參閱'replicate'函數,並注意'String'只是[Char]的同義詞' – luqui 2014-10-28 20:44:04
我看到了,但我找不到任何示例來了解如何真正使用它... :( – ZelelB 2014-10-28 20:45:28
@ZelelB這是非常基本的,所以如果你偶然發現類似的東西,也許你應該[學習你一個好的Haskell!](http://learnyouahaskell.com/)。 – MasterMastic 2014-10-28 22:07:57