如何删除 java 中字符串缓冲区的最后一个字符?

How to remove last character of string buffer in java?

我有以下代码,我想从 StringBuffer 中删除最后附加的字符:

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

我想在最后一个值出现后删除“,”(完成 For 循环后)

首先不要附加它:

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

此外,请注意,如果您不需要同步(在此代码中似乎没有同步),最好使用 StringBuilder.

试试这个代码:

已将下行添加到您现有的代码中。

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

完整代码:

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

对于您的具体用例,请考虑@AndyTurner 的回答。在大多数情况下,不处理稍后将被丢弃的数据是最有效的解决方案。

否则,要回答你的问题,

How to remove last character of string buffer in java?

您可以简单地调整 StringBuffer 的长度 StringBuffer.setLength():

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

输出:

Hello Worl

请注意,这要求 StringBuffer 中至少有一个字符可用,否则您将得到 StringIndexOutOfBoundsException.

如果给定长度小于当前长度,setLength 方法实质上将 AbstractStringBuilder class 的 count 成员设置为给定的新长度。在这种情况下,不会执行其他操作,如字符数组复制。

请检查这个。

为什么要删除最后附加的字符 , 那么不要附加?如果您没有进一步使用该字符。

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