如何在Ruby中正确使用ljust和rjust?

如何在Ruby中正确使用ljust和rjust?,ruby,string,Ruby,String,我有一些代码: line_width = 26 ch3 = "Chapter 3: Letters page 13" puts(ch3.ljust(line_width/2) + ch3.rjust(line_width/2)) #=> Chapter 3: Letters page 13Chapter 3: Letters page 13 我希望输出按如下方式从中间拆分: Half-Text______________________________________________

我有一些代码:

line_width = 26

ch3 = "Chapter 3: Letters page 13"
puts(ch3.ljust(line_width/2) + ch3.rjust(line_width/2))

#=> Chapter 3: Letters page 13Chapter 3: Letters page 13
我希望输出按如下方式从中间拆分:

Half-Text__________________________________________________Half-Text

怎么做?

您需要先将文本分成两部分

line_width = 26

ch3 = "Chapter 3: Letters page 13"

ch3 = ch3.split(/\s(?=page)/) #=> ["Chapter 3: Letters", "page 13"]

puts(ch3[0].ljust(line_width / 2) + ch3[1].rjust(line_width / 2))
这个输出

Chapter 3: Letters      page 13

如果我理解正确,我不会在这里使用
ljust
rjust

line_width = 40
ch3 = "Chapter 3: Letters page 13"

left, right = ch3.split(/\s(?=page\s+\d+)/)
  #=> ["Chapter 3: Letters", "page 13"] 
puts left + ' '*(line_width-left.size-right.size) + right
印刷品

Chapter 3: Letters               page 13
请注意,
“”*(line_width-left.size-right.size)
创建一个由

line_with-left.size-right.size
  #=> 40 - 18 - 7 => 15

空间。

啊,谢谢。我只是在读我的课本,它从来没有提到使用split。很奇怪。很高兴不仅仅是我是一个哑巴。
“第三章:字母”。size#=>18
线宽/2#=>13
,所以
放入(ch3[0]。ljust(lineu width/2)
尝试将长度
18
的字符串填充到
13
空格中。结果是
.ljust(lineu width/2)
被忽略。(例如,
“abcdef”.ljust(1)#=>“abcdef”
)。但是,由于
“第13页”。大小#=>7
ch3[1]
将在左侧填充
13-7
6空格。因此,您的实际行长是
18+6+7
空格,而不是
26
空格。您真的想在这两行之间显示一行吗?”“半文本”字符串,还是表示空格?你说的“半文本”是什么意思?为什么不用你实际想要的字符串替换“半文本”作为例子。我假设
线宽
等于第13页
“第3章:字母”
结尾的字符串长度“
,中间有一行或多行空格。如果是,则两端之间只有一个空格(或一行长度为1)。如果是第
”101页“
,则两端之间将没有空格。