Announcement

Collapse
No announcement yet.

Formatierte Stringausgabe

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Formatierte Stringausgabe

    Hi!<br>
    Ich möchte einen String mit einer festen Länge ausgeben.
    Z.B. soll auf dem Bildschirm folgende Ausgabe erscheinen:<br>
    Vorname: Micky________Nachname: Maus<br>
    Vorname: Donald_______Nachname: Duck<br>
    <p>
    In dem genannten Beispiel sollen die Underline's NICHT erscheinen!!!
    D.h., unabhängig davon, wie lange z.B. ein Name ist (bis zu
    einer bestimmten,fest definierten Länge), soll der Space/Raum
    immer gleich sein, so daß die Ausgabe formatiert und "tabellenartig"
    erscheint. Mit der Klasse MessageFormat kann ich fast eine solche
    Ausgabe erreichen, nur rückt diese bei kürzeren Namen zusammen bzw.
    schiebt es bei längeren Auseinander.<br>
    Kennt jemant eine Möglchkeit, eine solche Ausgabe zu erzwingen?
    <p>
    Gruß<br>
    Michael

  • #2
    Hallo Michael,

    ich selbst hatte das gleiche Problem und habe mir die Methoden justifyLeft(String, int) und justifyRight(String,int) programmiert.
    In den Methoden wandel ich den String erst in einen StringBuffer um, fülle dann mit blanks auf, wenn der String kleiner als die angegebene Länge ist, oder schneide Formatgerecht ab, wenn dieser länger sein sollte.

    public String justifyLeft(String s, int i) {<br>
    if( s == null) { // Attribut war nicht gefüllt<br>
    s = new String();<br>
    }<br>
    try {<br>
    StringBuffer sb=new StringBuffer();<br>
    if(s.length() == 0) { //Leerer String<br>
    s = " ";<br>
    }<br>
    sb=sb.append(s);<br>
    int anzBlank= i - s.length();<br>
    if(anzBlank < 0) { // wenn String zu groß ist, abschneiden<br>
    try {<br>
    return s.substring(0,i);<br>
    }<br>
    catch(IndexOutOfBoundsException e) {<br>
    System.out.println("dürfte nicht passieren");<br>
    }<br>
    }<br>
    for(int t=0;t<anzBlank;t++) { //bis zu Länge mit Blank auffüllen<br>
    sb=sb.append(' ');<br>
    }<br>
    return sb.toString();<br>
    } catch (NullPointerException nE) {<br>
    System.out.println("Null Pointer Exception: " + s + " " + i);<br>
    }<br>
    return "";<br>
    }<br>

    Auf dem Bildschirm könnte es noch wegen der Schriftart verschoben sein, ich nutze für solche Ausgaben dann immer eine monospaced Schriftart.

    Ich habe mir zusätzlich eine StringLayouter Klasse gestrickt, die Aufgrund von einfachen Layoutangaben meine Attribute der Objekte für Listen oder Export von sequentiellen Dateien aufbereiten. Dazu gehören dann auch noch die Formatierung von Datümern und die Ausgabe von unterdrückten Nullen in Dezimalwerten

    Comment


    • #3
      int wantedstringlength = 17;<br>
      int x = wantedstringlength-string.length();<br>
      for (int i=0; i<x; i++) string+=" ";<br>
      Grüße, Michae

      Comment

      Working...
      X