¿Cómo puedo convertir un Int
a 7 caracteres de largo String
, para que 123
se convierta en "0000123"
?
string
scala
formatting
int
Iván
fuente
fuente
f"$a%07d"
(si tiene un alcanceval
/var
a
in).regex
string.replaceAll("\\G0", " ")
para reemplazar ceros con espacios iniciales según lo dicho aquí"% 7d".format(123)
.Respuesta corta:
Respuesta larga:
Scala StringOps (que contiene un buen conjunto de métodos que tienen los objetos de cadena de Scala debido a conversiones implícitas) tiene un
padTo
método que agrega una cierta cantidad de caracteres a su cadena. Por ejemplo:Volverá "alohaaaaaa". Tenga en cuenta que el tipo de elemento de una cadena es un Char, de ahí las comillas simples alrededor de
'a'
.Su problema es un poco diferente ya que necesita anteponer caracteres en lugar de añadirlos . Es por eso que necesita revertir la cadena, agregar los caracteres de relleno (los estaría anteponiendo ahora ya que la cadena está invertida) y luego revertir todo nuevamente para obtener el resultado final.
¡Espero que esto ayude!
fuente
El
padding
se denota por%02d
para0
tener el prefijo para hacer la longitud2
:fuente
val paddedVal = f"${num}%02d"
debería cambiarsenum
pori
f"$num%02d"
(no se necesitan corchetes aquí)huynhjl me adelantó para dar la respuesta correcta, así que aquí hay una alternativa:
fuente
"0000000" + Int.MaxValue takeRight 7
=>7483647
. Si bien es "técnicamente" correcto por la interpretación literal de la pregunta, es poco probable que el lector no quiera que el número rellenado se extienda más allá de los 7 dígitos si el número es tan grande.fuente
En caso de que estas preguntas y respuestas se conviertan en el compendio canónico,
fuente
¿Necesitas lidiar con números negativos? Si no, simplemente lo haría
o
De lo contrario, puede utilizar
NumberFormat
:fuente