miércoles, 25 de marzo de 2009

Añadir espacios de relleno a un String en Java

Si se desea que un String tenga un tamaño determinado, rellenando con espacios al final hasta un número de caracteres determinado se puede utilizar el método format de la clase String con la siguiente cadena de formato:

String.format("%1$-10s",cadena);

(Se debe sustituir el 10 por el tamaño deseado, y cadena debe ser la variable de tipo String o la cadena literal entre comillas sobre el que se desea aplicar el relleno).

En este ejemplo se asigna un tamaño de 10 caracteres para el String llamado cadena. Si esa cadena tuviera menos de esos 10 caracteres la sentencia anterior devolvería un String con dicha cadena seguida de los espacios necesarios hasta rellenar los 10 caracteres. En caso de que la cadena tuviera más de 10 caracteres, dicha sentencia devuelve la cadena tal cual, es decir, no la corta a 10 caracteres. Para eso habría que utilizar el método substring.

El guión que se indica delante del 10 permite que los espacios de relleno se coloquen detrás de la cadena. Si se desea que el relleno se coloque delante se debe eliminar ese guión.

8 comentarios:

  1. muchisimas gracias, de todos los otros ejemplos que lei en varias partes este es el primero que entiendo =D

    ResponderEliminar
  2. Muy bueno, podrías generalizar para otro relleno? es decir, quiero completar con ceros (u otro caracter) por la izquierda, NO UN NÚMERO que es lo único que encuentro, sino una cadena.. ¿Qué código le pongo a tu ejemplo para que rellene con ceros y no con espacios? La explicación no lo pone, pero supongo que %1$ = espacio, cierto?

    ResponderEliminar
  3. Hola, no se si sea algo tarde para responder lo de los ceros a la izquierda, lo que se puede realizar es lo siguiente:

    int numero=1; /* tu numero al cual quieres que se le agregen los ceros */
    String s = String.format("%05d",numero);/* %=primer parametro, en este caso sera numero; 0=relleño; 5=longitud para el resultado; d=indica que numero es un numero decimal */
    System.out.println("\"cadena="+s+"\"");/* debe mostrar : "cadena=00001" */

    Espero que le sirva a alguien este ejemplo.

    ResponderEliminar
  4. Muchas gracias... esta genial-.------ que dios te bendiga.

    ResponderEliminar
  5. Hola, quisiera plantear una duda: tengo que crear un campo de texto con un string limitado a 50 caracteres, y que rellene con asteriscos * a la derecha hasta el final. A mí se me ha ocurrido que "%*$-50s" cumpliría con esta función-

    ResponderEliminar
  6. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  7. Cad = String.format("%8s", 1237);
    System.out.println( Cad );

    ResponderEliminar
  8. Tenngo una duda y si quisuera que el numero 5 se modificabe como una variable.
    String for = String.format("%5s","t");
    _ _ _ _ _t

    Perooo quiero que se variable ese decir q pueda cambiarlos digamos en un for
    Y que des pues deje un espacio luego segun mmm nose si me dejo enteder

    ResponderEliminar

 

Contador de visitas