使用不同的对齐在同一行上打印两次字符串

时间:2016-03-21 15:51:25

标签: ruby

我尝试在不同路线的单行上打印字符串。我想打印:

---> text <---          ---> text <---

我做了:

lineWidth = 40
str = "---> text <---"
puts str.ljust lineWidth str1.center lineWidth

我收到了错误消息:

in `<main>': undefined method `lineWidth' for main:Object (NoMethodError)

有什么想法吗?

4 个答案:

答案 0 :(得分:3)

试试这个:

puts str.ljust(lineWidth/2) + str.rjust(lineWidth/2)

答案 1 :(得分:1)

正如@SergioTulentsev所说,Ruby解释器将您的代码读取为:

puts(str.ljust(lineWidth(str1.center(lineWidth))))

您需要使用括号来区分一个puts来电:

puts(str.ljust(lineWidth))
puts(str.ljust(lineWidth))

答案 2 :(得分:1)

printfformat非常适合在一行输出多个变量:

irb(main):006:0> lineWidth = 40
=> 40
irb(main):007:0> str = "---> text <---"
=> "---> text <---"
irb(main):008:0> printf("%s%s\n",str.ljust(lineWidth), str.center(lineWidth))
---> text <---   

                                ---> text <---

答案 3 :(得分:1)

以下是另外三种方法。

str = "---> text <---"
line_width = 40

<强>#1

puts str + " " * (line_width - 2 * str.length) + str

---> text <---            ---> text <---
0         1         2         3         4

<强>#2

s = " " * line_width
  #=> "                                        "
s[0, str.length] = s[-str.length..-1] = str
puts s

---> text <---            ---> text <---
0         1         2         3         4        

<强>#3

s = str * 2
  #=> "---> text <------> text <---"
s.insert(str.length, " " * (line_width - 2 * str.length))
puts s

---> text <---            ---> text <---
0         1         2         3         4        

或(变体)

s = str * 2
s[str.length, 0] = " " * (line_width - 2 * str.length)
puts s

---> text <---            ---> text <---
0         1         2         3         4