我尝试在不同路线的单行上打印字符串。我想打印:
---> text <--- ---> text <---
我做了:
lineWidth = 40
str = "---> text <---"
puts str.ljust lineWidth str1.center lineWidth
我收到了错误消息:
in `<main>': undefined method `lineWidth' for main:Object (NoMethodError)
有什么想法吗?
答案 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)
printf
和format
非常适合在一行输出多个变量:
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