Estoy leyendo el búfer en serie con el método readLine(). La cadena devuelta por readLine() tiene el formato "str1: str2". En un bucle while cuando uso readLine número() de veces para obtener una respuesta del comando de puerto serie consigo salida raro como esto:Cadenas de formato en java
String1 : string1
SString11 : String2
StringString2 : String23
String4 : String5
Pero necesito la salida formateada como a continuación
String1 : string1
SString11 : String2
StringString2 : String23
String4 : String5
I usó el método de división en cadena y obtuvo las dos cadenas separadas con delimitador como ':'. Pero ahora necesito agregar el String1 con espacios para alinear todos los dos puntos.
Lo siento si la explicación de mi problema es extraña. Pero si alguien entendió el problema, ¿podría sugerirme cómo hacerlo?
Usé String.format() y funcionó. Pero otro problema está ahí. El problema es que estoy poniendo la cadena de salida en una instancia de JTextArea. Elegí la fuente como Arial. Cuando imprima como este String.format ("% - 30s:% 30s", temp [0], temp [1]); Se imprime como Nombre de la imagen: firmware básico de Linux Versión: 2.1.1.17 En las dos líneas anteriores "I" en la imagen de la palabra y "V" en la versión de la palabra tiene un ancho diferente en el área de texto. Entonces, aunque estoy usando una cadena de 30 caracteres, los dos puntos no se están alineando. ¿Hay alguna solución para esto? –
eche un vistazo a java.awt.FontMetrics (tal vez ... ha pasado mucho tiempo desde que me interesó el ancho de un campo/área de texto :-) – TofuBeer
Necesita usar una fuente como Courier, esto se conoce como una fuente 'monoespaciada' que significa que todos los caracteres tienen el mismo ancho. Esto significa, por supuesto, que si los caracteres se alinean en la cadena, también se alinearían en la salida. –