Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 打印对齐的横幅?_Ruby_Pretty Print - Fatal编程技术网

Ruby 打印对齐的横幅?

Ruby 打印对齐的横幅?,ruby,pretty-print,Ruby,Pretty Print,我想知道是否有一些ruby打印函数允许我打印字符串,使其居中并填充空白。我需要为一个有不同文本的节目制作横幅,如下所示: <!-- ======================================================================= --> <!-- Whatever text is in the string.... --> <!-- =====

我想知道是否有一些ruby打印函数允许我打印字符串,使其居中并填充空白。我需要为一个有不同文本的节目制作横幅,如下所示:

<!-- ======================================================================= --> 
<!--                     Whatever text is in the string....                  --> 
<!-- ======================================================================= --> 


实际上,我找到了一种方法,可以对一个经过修改的字符串执行此操作:这里是一个经过修改的答案,希望这更符合您的想法。它假定您有Unix工具
fmt
来调整行的大小。这可能在Ruby中实现,只需做一点工作

msg = <<MSG_END
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nunc tincidunt libero eget justo convallis tincidunt. Curabitur
augue arcu, eleifend sit amet porttitor a, porttitor ac purus.
Vivamus non leo nulla, vel pulvinar urna. Cum sociis natoque penatibus
et magnis dis parturient montes, nascetur ridiculus mus. In at purus
risus. Maecenas imperdiet commodo turpis ullamcorper porttitor. Sed
imperdiet porta rutrum. Proin sodales lorem et dui mattis accumsan.
Etiam fermentum magna sed justo tristique commodo. Nulla at purus
in leo dignissim ultrices. Mauris tincidunt egestas nunc, sit amet
placerat mauris hendrerit at. Vestibulum at vestibulum ante.
MSG_END

cols = 60 - 9 # subtract 9 to account for the extra `<!-- ` and ` -->`

sized = `echo '#{msg}' | fmt -w #{cols}`

centered = sized.split("\n").map do |l|
   "<!-- #{l.center(cols)} -->\n"
end

puts centered
msg=

它没有达到我想要的效果。从第二行开始,它就没有对准中心。我修改了上面的答案,希望这更符合你的想法。
msg = <<MSG_END
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nunc tincidunt libero eget justo convallis tincidunt. Curabitur
augue arcu, eleifend sit amet porttitor a, porttitor ac purus.
Vivamus non leo nulla, vel pulvinar urna. Cum sociis natoque penatibus
et magnis dis parturient montes, nascetur ridiculus mus. In at purus
risus. Maecenas imperdiet commodo turpis ullamcorper porttitor. Sed
imperdiet porta rutrum. Proin sodales lorem et dui mattis accumsan.
Etiam fermentum magna sed justo tristique commodo. Nulla at purus
in leo dignissim ultrices. Mauris tincidunt egestas nunc, sit amet
placerat mauris hendrerit at. Vestibulum at vestibulum ante.
MSG_END

cols = 60 - 9 # subtract 9 to account for the extra `<!-- ` and ` -->`

sized = `echo '#{msg}' | fmt -w #{cols}`

centered = sized.split("\n").map do |l|
   "<!-- #{l.center(cols)} -->\n"
end

puts centered
<!-- Lorem ipsum dolor sit amet, consectetur adipiscing  -->
<!--  elit.  Nunc tincidunt libero eget justo convallis  -->
<!-- tincidunt. Curabitur augue arcu, eleifend sit amet  -->
<!--  porttitor a, porttitor ac purus.  Vivamus non leo  -->
<!--    nulla, vel pulvinar urna. Cum sociis natoque     -->
<!-- penatibus et magnis dis parturient montes, nascetur -->
<!--     ridiculus mus. In at purus risus. Maecenas      -->
<!-- imperdiet commodo turpis ullamcorper porttitor. Sed -->
<!-- imperdiet porta rutrum. Proin sodales lorem et dui  -->
<!--  mattis accumsan.  Etiam fermentum magna sed justo  -->
<!-- tristique commodo. Nulla at purus in leo dignissim  -->
<!--  ultrices. Mauris tincidunt egestas nunc, sit amet  -->
<!--     placerat mauris hendrerit at. Vestibulum at     -->
<!--                  vestibulum ante.                   -->