Scala 将所有线条设置为相同宽度(添加空格)
我目前正在尝试用我的文本制作一个网格。如果我有这样的文本:Scala 将所有线条设置为相同宽度(添加空格),scala,text,grid,Scala,Text,Grid,我目前正在尝试用我的文本制作一个网格。如果我有这样的文本: AAAAA\n BBBBBBB\n EEEE\n CCCCCC\n AAAAA \n BBBBBBB\n EEEE \n CCCCCC \n 我希望它是这样的: AAAAA\n BBBBBBB\n EEEE\n CCCCCC\n AAAAA \n BBBBBBB\n EEEE \n CCCCCC \n 我做了一个简单的函数,可以做到这一点,但在我看来,这绝对不是正确的方法(太长了): private def fixT
AAAAA\n
BBBBBBB\n
EEEE\n
CCCCCC\n
AAAAA \n
BBBBBBB\n
EEEE \n
CCCCCC \n
我希望它是这样的:
AAAAA\n
BBBBBBB\n
EEEE\n
CCCCCC\n
AAAAA \n
BBBBBBB\n
EEEE \n
CCCCCC \n
我做了一个简单的函数,可以做到这一点,但在我看来,这绝对不是正确的方法(太长了):
private def fixText(行:Vector[String]):Vector[String]={
val fixedLines=用于(i知道:
"aaa".padTo(5, 'A') // aaaAA
你可以做:
val input = "AAAAA\nBBBBBBB\nEEEE\nCCCCCC\n".split("\n")
val max = input.map(_.size).max // BBBBBBB => 7
input.map(s => s.padTo(max, ' ')).mkString("\n")
它首先在拆分行后获取元素的最大长度,然后在返回前用适当数量的字符填充所有行
不完全是一行,但一行可能意味着通过多次计算,性能损失:
val input = "AAAAA\nBBBBBBB\nEEEE\nCCCCCC\n"
input.split("\n").map(s => s.padTo(input.split("\n").map(_.size).max, ' ')).mkString("\n")
我也受着把每件事都变成一行的诱惑,但这并不总是一个好主意