123 votes

Comment convertir un Int en une chaîne de caractères d'une longueur donnée avec des zéros en tête à aligner ?

Comment puis-je convertir un Int à une longueur de 7 caractères String de sorte que 123 est transformé en "0000123" ?

2voto

som-snytt Points 17224

Au cas où ces questions/réponses deviendraient le compendium canonique,

scala> import java.text._
import java.text._

scala> NumberFormat.getIntegerInstance.asInstanceOf[DecimalFormat]
res0: java.text.DecimalFormat = java.text.DecimalFormat@674dc

scala> .applyPattern("0000000")

scala> res0.format(123)
res2: String = 0000123

1voto

0__ Points 23597

Avez-vous besoin de traiter des nombres négatifs ? Si non, je ferais simplement

def str(i: Int) = (i % 10000000 + 10000000).toString.substring(1)

ou

def str(i: Int) = { val f = "000000" + i; f.substring(f.length() - 7) }

Sinon, vous pouvez utiliser NumberFormat :

val nf = java.text.NumberFormat.getIntegerInstance(java.util.Locale.US)
nf.setMinimumIntegerDigits(7)
nf.setGroupingUsed(false)
nf.format(-123)

0voto

Pour une utilisation en String :

def completeTo10Digits(entity: String): String = {
    val zerosToAdd = (1 to (10 - entity.length)).map(_ => "0").mkString
    zerosToAdd + entity
  }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X