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

Zel*_*elB 3 string haskell

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

我该怎么做?

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

cha*_*ter 9

使用replicate

underline :: String -> String
underline = flip replicate '-' . length
Run Code Online (Sandbox Code Playgroud)

这将为您提供一个字符串,它是字符 '-' 的 n 倍,其中 n 是输入字符串的长度。它与以下内容相同:

underline = map (const '-')
Run Code Online (Sandbox Code Playgroud)

然后您可以像这样使用它(例如yourString = "Available Chars (111)"):

> putStrLn yourString >> putStrLn (underline yourString)
Available Chars (111)
---------------------
Run Code Online (Sandbox Code Playgroud)

  • 你可能指的是`map (const '-')` (4认同)
  • 我怀疑这种使用 pointfree 风格超出了 OP 的能力;这个答案在有针对性的风格中会更有帮助,并且专注于“复制”的工作原理。 (2认同)