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

如何将Scala中带有字符串插值的字符串格式化为固定宽度的字符串?,scala,padding,scala-2.10,string-interpolation,format-string,Scala,Padding,Scala 2.10,String Interpolation,Format String,我正在与一个非常旧的系统交互,我需要生成的文件需要一个由字符串组成的字段,但宽度必须正好为15 我想要这样的东西: val companyName = "FooBar, Inc" // 11 chars f"$companyName%s" 返回: " FooBar, Inc" 有没有一种巧妙的方法来完成我想用字符串插值来做的事情?与a一起使用。肯定有什么东西能满足你的要求:-) 此代码将执行您想要的操作: scala> val companyName = "FooBar, Inc

我正在与一个非常旧的系统交互,我需要生成的文件需要一个由字符串组成的字段,但宽度必须正好为15

我想要这样的东西:

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

"    FooBar, Inc"
有没有一种巧妙的方法来完成我想用字符串插值来做的事情?

与a一起使用。肯定有什么东西能满足你的要求:-)

此代码将执行您想要的操作:

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

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

哦,哇。我将编辑我的问题,因为它甚至都不正确。我不知道我在REPL中输入了什么,因为这显然有效。谢谢。用这种方法可以得到左对齐的格式(在右边填充空格)吗?是的,对宽度说明符预先挂起“-”:
scala>f“$companyName%%15s”
我可以把15a参数设置为:like
val w=15
现在执行类似的操作:
f“$companyName%${w}s”
@drjerry可能实现这种效果的唯一方法是使用
字符串格式(“%”+w+“s”,w,companyName)
。这个问题现在看起来很简单,这是因为我在得到解决方案的整个过程中犯了一些错误,所以我把这个问题分割开来,这样才有意义。