在Scala中如何使用字符串插值将字符串格式化为固定宽度的字符串?

12

我正在与一个非常古老的系统进行交互,我需要生成的文件需要一个由字符串组成的字段,但它的宽度必须精确地为15个字符。

我想要类似以下的东西:

val companyName = "FooBar, Inc" // 11 chars
f"$companyName%s"

返回:

"    FooBar, Inc"

使用字符串插值有什么巧妙的方法可以完成我正在尝试做的事情吗?


这个问题现在看起来非常简单,因为当我有解决方案的时候,我做错了其他事情,所以我将问题简化,使其有意义。 - myyk
1个回答

22

使用 String.format格式字符串。肯定有适合你的东西 :-)

这段代码可以实现你想要的功能:

scala> val companyName = "FooBar, Inc"
companyName: String = FooBar, Inc

scala> f"$companyName%15s"
res0: String = "    FooBar, Inc"

哦,哇。我要编辑我的问题,因为它甚至不正确。我不知道我在 REPL 中输入了什么,因为这显然是有效的。谢谢。 - myyk
1
这种方法能否实现左对齐格式(在右侧填充空格)? - 0__
5
是的,在宽度说明符之前添加 '-':scala> f"$companyName%-15s" - user1898811
2
我可以将15作为参数吗:例如 val w=15,现在可以这样做:f"$companyName%${w}s" - dr jerry
1
@drjerry 可能唯一实现这样的方式是使用 String.format("%" + w + "s", w, companyName) - Ava

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接