¿Cómo puedo imprimir un número o hacer una cadena con relleno de ceros para que tenga un ancho fijo?
Por ejemplo, si tengo el número 12
y quiero hacerlo 000012
.
El paquete fmt puede hacer esto por usted:
fmt.Printf("|%06d|%6d|\n", 12, 345)
Observe el 0 en% 06d, que lo convertirá en un ancho de 6 y lo rellenará con ceros. El segundo se rellenará con espacios.
Puedes verlo en acción aquí: http://play.golang.org/p/cinDspMccp
-
solo da espacios, necesito ceros.Sprintf
lugar dePrintf
Utilice la
Printf
función del paquete fmt con unwidth
de6
y el carácter de relleno0
:Configurando las
width
obras poniendo un número entero directamente antes del especificador de formato ('verbo'):Los únicos caracteres de relleno admitidos por Golang (y la mayoría de los otros idiomas) son espacios y
0
:Es posible justificar a la derecha la impresión anteponiendo un signo menos
-
:Tenga en cuenta que para los números de punto flotante, el ancho incluye toda la cadena de formato:
Es útil tener en cuenta que el ancho también se puede establecer mediante programación usando en
*
lugar de un número y pasando el ancho comoint
parámetro:Esto podría ser útil, por ejemplo, si el valor más grande que desea imprimir solo se conoce en tiempo de ejecución (llamado
maxVal
en el siguiente ejemplo):Por último, si no desea imprimir
stdout
pero devolver una cadena, utiliceSprintf
también del paquete fmt con los mismos parámetros:fuente
Hay una forma más sencilla de lograrlo. Utilizar
fmt.Sprintf
formatea y devuelve una cadena sin imprimirla en ninguna parte. Aquí%02d
dice pad cero a la izquierda para el valor que tiene <2 dígitos. Si el valor dado tiene 2 o más dígitos, no se rellenará. Por ejemplo:Puede usar
%03d
o más para un relleno de más ceros.fuente
La pregunta " Lista de formato de impresión en Go lang " nos recuerda que también existe la bandera:
Puede ver más ejemplos de relleno con
DaddyOh/golang-samples/pad.go
, si desea rellenar con otras secuencias de cadenas (más complejas que '0
' o ''):
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)
Ver play.golang.org:
fuente
lpad ("3", "0", 2) resultado: "03"
lpad ("12", "0", 6) resultado: "000012"
fuente