我有以下代码,我想删除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循环后)
答案 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")
然后不附加?如果你没有进一步使用这个角色。
,