hackerrank - manejo de cadenas en java
Formato de salida Java para cadenas (6)
EDITAR: Esta es una respuesta extremadamente primitiva, pero no puedo eliminarla porque fue aceptada. Ver las respuestas a continuación para una mejor solución, aunque
¿Por qué no generar una cadena de espacios en blanco de forma dinámica para insertar en la declaración?
Entonces, si quieres que todos comiencen con el personaje número 50 ...
String key = "Name =";
String space = "";
for(int i; i<(50-key.length); i++)
{space = space + " ";}
String value = "Bob/n";
System.out.println(key+space+value);
Pon todo eso en un bucle e inicializa / establece las variables "clave" y "valor" antes de cada iteración y estás dorado. También usaría la clase StringBuilder
, que es más eficiente.
Me preguntaba si alguien me puede mostrar cómo usar el método de formato para Java Strings. Por ejemplo, si quiero que el ancho de todos mis resultados sea el mismo
Por ejemplo, supongamos que siempre quiero que mi salida sea la misma
Name = Bob
Age = 27
Occupation = Student
Status = Single
En este ejemplo, todos los resultados están formateados cuidadosamente uno debajo del otro; ¿Cómo puedo lograr esto con el método de formato?
Para responder a su pregunta actualizada, puede hacer
String[] lines = ("Name = Bob/n" +
"Age = 27/n" +
"Occupation = Student/n" +
"Status = Single").split("/n");
for (String line : lines) {
String[] parts = line.split(" = +");
System.out.printf("%-19s %s%n", parts[0] + " =", parts[1]);
}
huellas dactilares
Name = Bob
Age = 27
Occupation = Student
Status = Single
Para valores decimales, puede usar DecimalFormat
import java.text.*;
public class DecimalFormatDemo {
static public void customFormat(String pattern, double value ) {
DecimalFormat myFormatter = new DecimalFormat(pattern);
String output = myFormatter.format(value);
System.out.println(value + " " + pattern + " " + output);
}
static public void main(String[] args) {
customFormat("###,###.###", 123456.789);
customFormat("###.##", 123456.789);
customFormat("000000.000", 123.78);
customFormat("$###,###.###", 12345.67);
}
}
y la salida será:
123456.789 ###,###.### 123,456.789
123456.789 ###.## 123456.79
123.78 000000.000 000123.780
12345.67 $###,###.### $12,345.67
Para más detalles mira aquí:
http://docs.oracle.com/javase/tutorial/java/data/numberformat.html
Si quiere un mínimo de 4 caracteres, por ejemplo,
System.out.println(String.format("%4d", 5));
// Results in " 5", minimum of 4 characters
Pero realmente, debes aprender a comprender la documentación.
@Override
public String toString()
{
return String.format("%15s /n %15d /n %15s /n %15s",name,age,Occupation,status);
}
System.out.println(String.format("%-20s= %s" , "label", "content" ));
- Donde% s es un marcador de posición para tu cadena.
- El ''-'' hace que el resultado esté justificado a la izquierda.
- 20 es el ancho de la primera cuerda
La salida se ve así:
label = content
Como referencia, recomiendo Javadoc en la sintaxis del formateador