it-swarm.com.de

Java-Ausgabeformatierung für Strings

Ich habe mich gefragt, ob mir jemand zeigen kann, wie ich die Formatierungsmethode für Java-Strings verwenden kann

Angenommen, ich möchte immer, dass meine Ausgabe dieselbe ist

Name =              Bob
Age =               27
Occupation =        Student
Status =            Single

In diesem Beispiel werden alle Ausgaben sauber untereinander formatiert. Wie würde ich das mit der Formatmethode erreichen?.

41
Steffan Harris

BEARBEITEN: Dies ist eine äußerst primitive Antwort, aber ich kann sie nicht löschen, weil sie akzeptiert wurde. Siehe die Antworten unten für eine bessere Lösung

Warum nicht einfach eine Whitespace-Zeichenfolge dynamisch erzeugen, um sie in die Anweisung einzufügen.

Also, wenn Sie wollen, dass alle mit dem 50. Zeichen beginnen ...

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);

Setze all das in eine Schleife und initialisiere/setze die Variablen "key" und "value" vor jeder Iteration und du bist golden. Ich würde auch die StringBuilder-Klasse verwenden, die effizienter ist.

6
gnomed
System.out.println(String.format("%-20s= %s" , "label", "content" ));
  • Dabei ist% s ein Platzhalter für Ihre Zeichenfolge.
  • Das "-" macht das Ergebnis linksbündig.
  • 20 ist die Breite der ersten Saite

Die Ausgabe sieht folgendermaßen aus:

label               = content

Als Referenz empfehle ich Javadoc zur Formatierungssyntax

123
stacker

Wenn Sie zum Beispiel mindestens 4 Zeichen benötigen,

System.out.println(String.format("%4d", 5));
// Results in "   5", minimum of 4 characters
7
I82Much

Um Ihre aktualisierte Frage zu beantworten, können Sie dies tun

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]);
}

druckt

Name =              Bob
Age =               27
Occupation =        Student
Status =            Single
6
Peter Lawrey
@Override
public String toString()
{
  return String.format("%15s /n %15d /n %15s /n   %15s",name,age,Occupation,status);
}
1
Amol Kakade

Für Dezimalwerte können Sie DecimalFormat verwenden

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);  
   }
}

und Ausgabe wird sein:

123456.789  ###,###.###   123,456.789
123456.789  ###.##        123456.79
123.78      000000.000    000123.780
12345.67    $###,###.###  $12,345.67

Für mehr Details schauen Sie hier:

http://docs.Oracle.com/javase/tutorial/Java/data/numberformat.html

0
Roman