2011-01-07 4 views
3

Ich brauche Währungswerte wie $ 35,40 (dreißig fünf Dollar und vierzig Cent) und danach zu schreiben, ich will es sein wird, einig "****"Formatierung meines String

so am Ende schreiben: thirty five dollars and forty cents********* in a maximum von 100 Zeichen

Ich habe eine Frage über etwas sehr wahrscheinlich gestellt, aber ich konnte den Hauptbefehl nicht verstehen.

String format = String.format("%%-%ds", 100); 
String valorPorExtenso = String.format(format, new Extenso(tituloTO.getValor()).toString()); 

Was muss ich auf Format ändern *** am Ende meiner Strafe stellen? So wie es jetzt ist, setzt es Räume.

+0

Dies ist ein spezifischeres Duplikat von http://stackoverflow.com/questions/388461/padding-strings-in-java –

Antwort

1

Diese Formatierung wird Ihnen 100 Zeichen einschließlich Ihrer Zeichenfolge

String.format("%-100s", "thirty five dollars and forty cents.").replaceAll(" ", "**"); 

UPDATE:

String.format("%-100s", "thirty five dollars and forty cents.").replaceAll(" ", "**").replace("* ", "**"); 
+1

Vorsicht, dies wird nicht korrekt funktionieren, wenn Sie eine ungleichmäßige taub haben er von Leerzeichen am Ende der Zeichenfolge. – morja

+0

der resultierende String wird eine Länge von 100 haben, aber wenn es eine ungerade Anzahl von Leerzeichen ist, wird das letzte Zeichen ein Leerzeichen sein – Redlab

+0

@morja und Redlab - ich Ding pringlesinn war nicht scharf darauf, genau 100 Zeichen Trimmen Leerzeichen zu bekommen. Aber wenn Sie es wollen, überprüfen Sie bitte das Update und kommentieren Sie es. – niksvp

2

ich tun würde:

String line = "thirty five dollars and forty cents"; 
StringBuilder lineBuffer = new StringBuilder(line); 
for(int i=0; i < 100 - line.length(); i++){ 
    lineBuffer.append("*"); 
} 
line = lineBuffer.toString(); 
0

Sie können nicht mit String.format() gibt es jedoch utils es in Apache StringUtils zu tun. Oder schreibe einfach eine kleine Methode, die das * für die angegebene Länge anfügt.

2

Vielleicht möchten Sie auf commons-lang http://commons.apache.org/lang/api-release/index.html

Ich habe den Eindruck, dass Sie Pad diese zu 100 Zeichen wollen suchen.

http://commons.apache.org/lang/api-release/org/apache/commons/lang/StringUtils.html#rightPad%28java.lang.String,%20int,%20java.lang.String%29

Die andere Option ist eine Basiskette 100 erstellen '*' Zeichen.

einen String-Builder Erstellen und wie folgt vorgehen:

StringBuilder sb= new StringBuilder(new Extenso(tituloTO.getValor()).toString()); 
sb.append(STARS_STR); 
String val= sb.substring(0, 100); 

, dass der Wert raus aus formatiert sollte.