Necesito producir una cadena de longitud fija para generar un archivo basado en la posición de los caracteres. Los caracteres que faltan deben llenarse con espacio.
Como ejemplo, el campo CIUDAD tiene una longitud fija de 15 caracteres. Para las entradas "Chicago" y "Rio de Janeiro" las salidas son
"Chicago" " Rio de Janeiro".
java
string
formatting
Rafael Borja
fuente
fuente
Respuestas:
Desde Java 1.5 podemos usar el método java.lang.String.format (String, Object ...) y usar el formato printf.
La cadena de formato
"%1$15s"
hace el trabajo. Donde1$
indica el índice del argumento,s
indica que el argumento es una Cadena y15
representa el ancho mínimo de la Cadena. Poniendo todo junto:"%1$15s"
.Para un método general tenemos:
¿Quizás alguien pueda sugerir otra cadena de formato para llenar los espacios vacíos con un carácter específico?
fuente
Maybe someone can suggest another format string to fill the empty spaces with an specific character?
- Eche un vistazo a la respuesta que le di.1$
representa el índice del argumento y15
el anchoUtilice
String.format
el relleno con espacios y reemplácelos con el carácter deseado.Impresiones
000Apple
.Actualice una versión más eficiente (ya que no depende de ella
String.format
), que no tiene problemas con los espacios (gracias a Rafael Borja por la pista).Impresiones
00New York
.Pero se debe agregar una verificación para evitar el intento de crear una matriz de caracteres con longitud negativa.
fuente
Este código tendrá exactamente la cantidad de caracteres indicada; lleno de espacios o truncado en el lado derecho:
fuente
También puede escribir un método simple como el siguiente
fuente
Para la almohadilla derecha necesitas
String.format("%0$-15s", str)
es decir, el
-
letrero tendrá el pad "derecho" y ningún-
letrero será el pad "izquierdo"mira mi ejemplo aquí
http://pastebin.com/w6Z5QhnJ
la entrada debe ser una cadena y un número
entrada de ejemplo: Google 1
fuente
Mucho mejor que guayaba imo. Nunca he visto un solo proyecto empresarial de Java que use Guava, pero Apache String Utils es increíblemente común.
fuente
La biblioteca de Guava tiene Strings.padStart que hace exactamente lo que quiere, junto con muchas otras utilidades útiles.
fuente
Aquí hay un buen truco:
fuente
Aquí está el código con casos de prueba;):
Me gusta TDD;)
fuente
Gran resumen aquí
fuente
Este código funciona muy bien.
Codificación feliz !!
fuente
fuente
Esta sencilla función funciona para mí:
Invocación:
fuente