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

Scala星号与字符串组合模式的对齐排版问题求解

问题原因

你当前固定在每行内容后加2个空格,没有适配不同行的内容长度差异,导致右侧星号无法对齐。此外split("\n")拆分字符串后会产生空元素,会额外输出不需要的空行。

解决方法

先过滤掉拆分后的空行,计算所有有效行的最大长度,再对每行内容左对齐补空格到最大长度即可,实现代码如下:

object task {
  def main(args: Array[String]) = {
    val mystring: Array[String] = Array("This\nis\nrandom\ntext\n\n")
    // 拆分字符串并过滤空行
    val s = mystring.mkString.split("\n").filter(_.nonEmpty)
    // 计算最长内容的长度
    val maxContentLen = s.map(_.length).max
    // 生成上下边框,总长度=最长内容长度 + 4(左右各1个空格+1个星号)
    val border = "*" * (maxContentLen + 4)
    
    println(border)
    for(element <- s) {
      // 内容左对齐补空格到最大长度,再拼接左右的星号和空格
      println(s"* ${element.padTo(maxContentLen, ' ')} *")
    }
    println(border)
  }
}

运行上述代码就能得到你期望的对齐输出效果,而且后续如果修改输入的字符串内容,也能自动适配长度保证边框对齐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:36:01