Comment puis-je imprimer un nombre ou créer une chaîne avec un remplissage nul pour la rendre de largeur fixe?
Par exemple, si j'ai le numéro 12
et que je veux le faire 000012
.
Le package fmt peut le faire pour vous:
fmt.Printf("|%06d|%6d|\n", 12, 345)
Remarquez le 0 dans% 06d, qui lui donnera une largeur de 6 et le remplira de zéros. Le second remplira d'espaces.
Vous pouvez le voir en action ici: http://play.golang.org/p/cinDspMccp
-
ne donne que des espaces, j'ai besoin de zéros.Sprintf
place dePrintf
Utilisez la
Printf
fonction du package fmt avec unwidth
of6
et le caractère de remplissage0
:Définition des
width
œuvres en mettant un entier directement précédant le spécificateur de format ('verbe'):Les seuls caractères de remplissage pris en charge par Golang (et la plupart des autres langues) sont des espaces et
0
:Il est possible de justifier correctement l'impression en ajoutant un signe moins
-
:Attention, pour les nombres à virgule flottante, la largeur inclut toute la chaîne de format:
Il est utile de noter que la largeur peut également être définie par programme en utilisant à la
*
place d'un nombre et en passant la largeur commeint
paramètre:Cela peut être utile par exemple si la plus grande valeur que vous souhaitez imprimer n'est connue qu'au moment de l'exécution (appelée
maxVal
dans l'exemple suivant):Enfin, si vous ne souhaitez pas imprimer
stdout
mais renvoyer une chaîne, utilisezSprintf
également le package fmt avec les mêmes paramètres:la source
Il existe un moyen le plus simple d'y parvenir. Utilisation
fmt.Sprintf
formate et renvoie une chaîne sans l'imprimer nulle part. Ici%02d
dit pad zéro à gauche pour la valeur qui a <2 nombres de chiffres. Si la valeur donnée comporte 2 chiffres ou plus, elle ne sera pas complétée. Par exemple:Vous pouvez utiliser
%03d
ou plus pour plus de zéros.la source
La question " Liste des formats d'impression en Go lang " nous rappelle qu'il y a aussi le drapeau:
Vous pouvez voir plus d'exemples de remplissage avec
DaddyOh/golang-samples/pad.go
, si vous souhaitez compléter avec d'autres séquences de chaînes (plus complexes que «0
» ou «»):
leftPad(s string, padStr string, pLen int)
rightPad(s string, padStr string, pLen int)
leftPad2Len(s string, padStr string, overallLen int)
rightPad2Len(s string, padStr string, overallLen int)
Voir play.golang.org:
la source
lpad ("3", "0", 2) résultat: "03"
lpad ("12", "0", 6) résultat: "000012"
la source