You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby如何实现基于最长文本宽度的居中内容边框?

嘿,我来帮你搞定这个Ruby边框功能!看起来你已经有思路了,只是输出没达到预期,咱们一步步来实现你想要的效果:

实现思路

核心就是以最长单词的长度为基准,让所有文本居中,再加上边框,具体分这几步:

  • 先找到输入文本里最长单词的长度,这是我们的基准宽度
  • 生成顶部和底部的边框线,用+开头结尾,中间用-填充到基准宽度
  • 把每个单词在基准宽度内居中,左右加上|作为侧边边框
  • 依次打印边框、所有居中后的文本行、底部边框
完整代码示例
def add_border(texts)
  # 先过滤空内容,避免出现基准宽度为0的情况
  valid_texts = texts.reject(&:empty?)
  return puts "没有有效文本哦~" if valid_texts.empty?

  # 获取最长文本的长度作为基准宽度
  max_width = valid_texts.max_by(&:length).length
  # 生成顶部/底部边框
  border_line = "+" + "-" * max_width + "+"

  # 打印边框和内容
  puts border_line
  valid_texts.each do |text|
    puts "|#{text.center(max_width)}|"
  end
  puts border_line
end

# 测试一下!
add_border(["Hello", "Ruby", "Programming"])
代码解释
  • valid_texts = texts.reject(&:empty?):先过滤掉空字符串,防止后续计算出错
  • max_width = valid_texts.max_by(&:length).length:用max_by快速找到最长的文本,再取它的长度作为基准
  • text.center(max_width):Ruby自带的字符串方法,能把文本在指定长度的区域内自动居中,不足的部分用空格填充
  • 边框线的长度和每行内容的长度保持一致,这样打印出来的边框就完全对齐啦
测试输出

运行上面的测试代码,你会得到这样的结果:

+-----------+
|   Hello   |
|   Ruby    |
|Programming|
+-----------+

如果你的输入是一个长字符串(比如"Hello Ruby Programming"),只需要先分割成单词数组再传入:

input_str = "Hello Ruby Programming"
add_border(input_str.split)

内容的提问来源于stack exchange,提问作者Bryan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:02:19