Post by BastianHallo,
ich habe eine Methode, die einen String fester Länge zurückgeben soll (360
Zeichen).
Dieser String wird aus mehreren Strings, die der Methode übergeben werden,
erzeugt. Die übergebenden Stings haben zusammen max. 360 Zeichen, minimal 0
Zeichen. Der return-String soll aber immmer 360 Zeichen lang sein (und wenn
es Leerzeichen sind). Gibt es eine einfachere Lösung, als zum Schluss die
Stringlänge zu bestimmen und dann mit fehlenden Leerzeichen aufzufüllen?
Viele Dank für Eure Hilfe!
Du fängst an, dir für solche Dinge eine Util- bzw. Helper-Klasse zu
schreiben. Zum Bleistift:
public class Formatter {
public static final int ALIGN_LEFT = 0;
public static final int ALIGN_RIGHT = 1;
public static final int ALIGN_CENTER = 2;
/**
* Formatiert einen String auf fixe Länge und füllt mit
* 'ch' auf. Die Ausrichtung kann links- oder rechtsbündig
* oder zentriert erfolgen.
* siehe: Formatter.ALIGN_LEFT, Formatter.ALIGN_RIGHT,
* Formatter.ALIGN_CENTER.
*
* @param str die zu formatierende Zeichenkette
* @param ch Zeichen mit dem aufgefüllt werden soll
* @param size die gewünschte Länge
* @param mode die Ausrichtung der formatierten Zeichenkette,
* Standard = linksbündig
* @return String mit gewünschter Länge und Formatierung
*/
public static String align(String str, char ch, int size, int mode)
{
int len = str.length();
if (len > size) {
return str.substring(0, size);
}
if (len == size) {
return str;
}
int i = 0;
int count = size - len;
StringBuffer buf = new StringBuffer();
switch (mode) {
case ALIGN_RIGHT:
while (i++ < count) {
buf.append(ch);
}
buf.append(str);
break;
case ALIGN_CENTER:
while (i++ < count / 2) {
buf.append(ch);
}
buf.append(str);
buf.append(ch);
break;
default :
buf.append(str);
break;
}
while (i++ < count) {
buf.append(ch);
}
return buf.toString();
}
}
Test:
System.out.println("|" +
Formatter.align("abcd", ' ', 15, Formatter.ALIGN_LEFT) + "|");
System.out.println("|" +
Formatter.align("123456",'A',15, Formatter.ALIGN_LEFT) + "|");
System.out.println("|" +
Formatter.align("abcd", ' ', 15, Formatter.ALIGN_RIGHT) + "|");
System.out.println("|" +
Formatter.align("123456",'A',15, Formatter.ALIGN_RIGHT) + "|");
System.out.println("|" +
Formatter.align("abdc", ' ', 15, Formatter.ALIGN_CENTER) + "|");
System.out.println("|" +
Formatter.align("123456",'A',15, Formatter.ALIGN_CENTER) + "|");
System.out.println("|" +
Formatter.align("12345", 'A', 4, Formatter.ALIGN_RIGHT) + "|");
Alfred