2016-05-03 13 views
2

ich folgenden Code haben, wollte ich von StringBuffer zuletzt angehängten Zeichen entfernen:Wie das letzte Zeichen des Zeichenfolgenpuffers in Java entfernen?

StringBuffer Att = new StringBuffer(); 
BigDecimal qty = m_line.getMovementQty(); 
int MMqty = qty.intValue(); 
for (int i = 0; i < MMqty;i++){ 
    Att.append(m_masi.getSerNo(true)).append(","); 
} 
String Ser= Att.toString(); 
fieldSerNo.setText(Ser); 

ich entfernen? „“ Nach dem letzten Wert kommen (nach der For-Schleife Schlichten)

+1

psudo Code 'wenn i = 0: string = '' + string' –

+0

Sie könnten tun' Att.deleteCharAt (Att.length() - 1) ' – Berger

Antwort

4

nicht Sie anhängen es in erster Linie:

for (int i = 0; i < MMqty;i++){ 
    Att.append(m_masi.getSerNo(true)); 
    if (i + 1 < MMqty) Att.append(","); 
} 

beachten Sie auch, dass, wenn Sie die Synchronisierung nicht erforderlich ist (die Sie in diesem Code nicht angezeigt), kann es besser sein StringBuilder zu verwenden.

0

Versuchen Sie diesen Code:

Hinzugefügt unteren Zeile zu Ihrem bestehenden Code.

Ser = Ser.substring(0, Ser.length()-1); 

Complet Code:

StringBuffer Att = new StringBuffer(); 
    BigDecimal qty = m_line.getMovementQty(); 
    int MMqty = qty.intValue(); 

    for(int i =0; i< MMqty;i++){ 


     Att.append(m_masi.getSerNo(true)).append(","); 
    } 

    String Ser= Att.toString(); 
    Ser = Ser.substring(0, Ser.length()-1); 
fieldSerNo.setText(Ser); 
8

Für Ihren konkreten Anwendungsfall betrachten wir die Antwort von @AndyTurner. Nicht die Verarbeitung von Daten, die später verworfen werden, ist in den meisten Fällen die effizienteste Lösung.

Andernfalls Ihre Frage zu beantworten,

Wie letzte Zeichen der Zeichenfolge-Puffer in Java entfernen?

Sie einfach die Länge der StringBuffer mit StringBuffer.setLength() anpassen können:

... 
StringBuffer buf = new StringBuffer(); 
buf.append("Hello World"); 
buf.setLength(buf.length() - 1); 
System.err.println(buf); 
... 

Ausgang:

Hello Worl 

Beachten Sie, dass dies erfordert, dass zumindest ein Zeichen in der StringBuffer verfügbar ist, andernfalls Sie erhalten eine StringIndexOutOfBoundsException. Wenn die angegebene Länge kleiner als die aktuelle Länge ist, setzt die Methode setLength das Element count der Klasse AbstractStringBuilder auf die angegebene neue Länge. In diesem Fall werden keine anderen Operationen wie Zeichenfeldkopien ausgeführt.

0

Bitte überprüfen Sie dies.

Warum möchten Sie das letzte angehängte Zeichen entfernen , nicht anhängen dann? wenn du den Charakter nicht weiter benutzt.

for (int i = 0; i < MMqty-1;i++){ 
     Att.append(m_masi.getSerNo(true)).append(","); 
    }