Наиболее эффективный способ форматирования строки в scala с начальными нулями и запятой вместо десятичной точки - PullRequest
0 голосов
/ 27 ноября 2018

Попытка создать простую функцию, в которой передается строковое значение, то есть «1», и средство форматирования должно возвращать значение с ведущими нулями и 5 десятичными точками, а не с точкой «.»Я пытаюсь вернуть его с запятой ','

Это то, что я пытался, однако, это не работает, потому что 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
}

Любая помощь будет высоко ценится.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Достаточно просто отформатировать 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 символов.

0 голосов
/ 27 ноября 2018

def f (значение: String) = новый java.text.DecimalFormat ("000000000.00000"). Format (value.toFloat) .replace (".", ",")

scala> f (913f) res5: String = 000000913,00000

// Редактировать: Используйте .toFloat (или .toInt, .toLong и т. Д.), Чтобы сначала преобразовать вашу строку в число.

...