如何制作一个退格按钮,删除for循环中stringbuilder的最后一个字符

时间:2014-02-21 17:21:15

标签: java android stringbuilder

我正在制作一个Android应用程序,通过蓝牙从arduino到android接收不同级别的电压并将其翻译成字母。我的应用程序已经可以将其翻译成字母了,而我现在的问题是我不知道如何删除stringbuilder里面的一个for循环中的最后一个字母..我有一个名为backspace的按钮,我想让它与同一个函数一起工作就像在计算机的退格区中按下它会删除最后一个字母..我希望有人可以帮助我,我还是新手。

注意:这些代码来自主要活动; sbletter是一个附加字母

的字符串缓冲区
boolean test = false;
char[] charArray = sbletter.toString().toCharArray();
char currentletter =' ';
char prevletter =' '; 

StringBuilder strBuild1 = new StringBuilder();

    for(int i = 0; i < charArray.length; i++) {
        currentletter = charArray[i];
            if(curletter != prevletter) {
                strBuild1.append(charArray[i]);
                    if(test){
                       strBuild1.deleteCharAt(strBuild1.length()-1); 
                    }
                test = false;
            }
                prevletter = currentletter;
        }

SecondActivity.textView1.setText(strBuild1.toString());

SecondActivity.backspace.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {

                test = true;

            }

        });

2 个答案:

答案 0 :(得分:1)

这肯定有用:

private void Zero1ActionPerformed(java.awt.event.ActionEvent evt) {                                      

    if (OutputTextField.getText().length()>0){
        StringBuffer sb = new StringBuffer(OutputTextField.getText());
        sb = sb.deleteCharAt(OutputTextField.getText().length()-1);
        OutputTextField.setText(sb.toString());
    }
}     

答案 1 :(得分:0)

退格的onClick中的onClickListener方法是事件驱动的,即,当单击退格按钮时,将调用onClick方法。因此,将test设置为true并不重要,因为for循环此时已经停止执行,因为它位于某处。

您可以直接使用sbletter删除最后一个字符,如下所示:

backspace.setOnClickListener(new View.OnClickListener() {

  public void onClick(View view) {

    sbletter = sbletter.deleteCharAt(sbletter.length - 1);

    // Now the last character from sbletter is deleted.
    // Use sbletter for whatever purpose you like now.
  }
}

请注意,StringBuilder和StringBuffer的deleteCharAt方法分别返回StringBuilder和StringBuffer对象,这些对象带有更改后的值,这就是我写的原因:

sbletter = sbletter.deleteCharAt(sbletter.length - 1); // Will work as expected.

而不只是:

sbletter.deleteCharAt(sbletter.length - 1); // Won't work as expected.

希望有所帮助。