Comment puis-je convertir un Int
à une longueur de 7 caractères String
de sorte que 123
est transformé en "0000123"
?
Réponses
Trop de publicités?La bibliothèque Java est plutôt bonne (comme dans excellent) prise en charge du formatage des numéros qui est accessible depuis StringOps classe String enrichie :
scala> "%07d".format(123)
res5: String = 0000123
scala> "%07d".formatLocal(java.util.Locale.US, 123)
res6: String = 0000123
Modifier l'article Scala 2.10 Comme suggéré par fommil, à partir de la version 2.10, il existe également un interpolateur de chaînes de formatage (qui ne prend pas en charge la localisation) :
val expr = 123
f"$expr%07d"
f"${expr}%07d"
Editer avril 2019 :
- Si vous voulez des espaces de tête, et non des zéros, il suffit de ne pas utiliser l'élément
0
du spécificateur de format. Dans le cas ci-dessus, ce seraitf"$expr%7d"
Testé dans 2.12.8 REPL. Il n'est pas nécessaire d'effectuer le remplacement de la chaîne de caractères comme suggéré dans un commentaire, ni même de mettre un espace explicite devant7
comme suggéré dans un autre commentaire. - Si la longueur est variable,
s"%${len}d".format("123")
Réponse courte :
"1234".reverse.padTo(7, '0').reverse
Longue réponse :
Scala StringOps (qui contient un bel ensemble de méthodes que les objets chaîne de Scala possèdent en raison des conversions implicites) possède un objet padTo
qui ajoute un certain nombre de caractères à votre chaîne. Par exemple :
"aloha".padTo(10,'a')
renverra "alohaaaaaa". Notez que le type d'élément d'une chaîne est un Char, d'où les guillemets simples autour de l'élément 'a'
.
Votre problème est un peu différent puisque vous devez Préparez au lieu des caractères ajout de les. C'est pourquoi vous devez inverser la chaîne, ajouter les caractères de remplissage (vous les ajouteriez maintenant puisque la chaîne est inversée), puis inverser à nouveau le tout pour obtenir le résultat final.
J'espère que cela vous aidera !
- Réponses précédentes
- Plus de réponses