使用前导零和逗号而不是小数点在 scala 中格式化字符串的最有效方法

Most efficient way to format a string in scala with leading Zero's and a comma instead of a decimal point

尝试创建一个简单的函数,通过该函数传入一个字符串值,即“1”,格式化程序应该 return 该值带有前导零和 5 个小数点,而不是点“.”。我正在尝试 return 用逗号 ','

这是我尝试过的方法,但它不起作用,因为 decimalFormatter 只能处理数字而不能处理字符串。最终目标是从“1”到“000000001,00000”——字符长度总共为 14。逗号后的5个0和逗号前的其余部分应补0以填充9位数字要求。

另一个例子是从“913”到“000000913,00000”

 def numberFormatter (value: String): String =
{
     import java.text.DecimalFormat
     val decimalFormat = new DecimalFormat("%09d,00000")
     val formattedValue = decimalFormat.format(value)
     return formattedValue
}

如有任何帮助,我们将不胜感激。提前谢谢你。

def f(value:String) = new java.text.DecimalFormat("000000000.00000").format(value.toFloat).replace(".", ",")

scala> f(913f) res5: 字符串 = 000000913,00000

// 编辑:首先使用 .toFloat(或 .toInt、.toLong 等)将字符串转换为数字。

用空格填充 String 很容易,但用零填充就没那么容易了。不过,自己动手并不难。

def numberFormatter(value :String) :String =
  ("0" * (9 - value.length)) + value + ",00000"

numberFormatter("1")    //res0: String = 000000001,00000
numberFormatter("913")  //res1: String = 000000913,00000

请注意,这不会截断输入 String。因此,如果 value 长于 9 个字符,则结果将长于所需的 15 个字符。