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

时间:2016-05-03 06:50:34

标签: java string stringbuffer

我有以下代码,我想删除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);

我想删除&#34; ,&#34;在最后一个值到来之后(完成For循环后)

4 个答案:

答案 0 :(得分:9)

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

否则,回答你的问题,

  

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

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

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

输出:

Hello Worl

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

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

答案 1 :(得分:4)

首先不要追加它:

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

另请注意,如果您不需要同步(此代码中没有显示),则最好使用StringBuilder

答案 2 :(得分:0)

试试这段代码:

在您的现有代码中添加以下行。

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

答案 3 :(得分:0)

请检查一下。

为什么你想删除最后一个附加的字符User.joins(:notes).where("notes.impact_score > 10") 然后不附加?如果你没有进一步使用这个角色。

,