尝试删除最后一个字符时,出现错误

Cant resolve method substring(int. int)


我正在尝试实现TextView的问题,我不确定是否可以成功使用.append().setText()方法。

是否有可能需要某种Android导入才能使用子字符串方法?

getUserIn_DEL = (Button) findViewById(R.id.userIn_DEL);
getUserAnswer = (TextView) findViewById(R.id.userInAnswer);

getUserIn_DEL.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (!getUserAnswer.getText().equals("?")) {
            String getUserAnswerString = getUserAnswer.getText().toString();
            int userAnswerLength = getUserAnswerString.length();
            int userAnswerLengthMin = userAnswerLength - 1;
            int userAnswerLengthMax = userAnswerLength + 1;
            getUserAnswerString = substring(userAnswerLengthMin, userAnswerLengthMax);
            getUserAnswer.setText(getUserAnswerString);
        }
    }
});

最佳答案

这只是一个说明原理的示例-使用您拥有的字符串。假设您的字符串是:

getUserAnswerString = "Nevermind";




它的长度为9。根据Java docs,String.substring(int beginIndex,int endIndex):


返回一个新字符串,该字符串是该字符串的子字符串。子字符串从指定的beginIndex开始,并扩展到索引endIndex-1处的字符。


您要删除最后一个字符,换句话说,您要为新字符串获取索引0和7之间的字符。要使用substring()并获取字符串中除最后一个字符以外的所有字符,您需要使用以下参数调用substring():


第一个参数为0,表示您从字符串中的第一个字符开始
第二个参数是8;为什么是8?因为文档说该子字符串扩展到索引endIndex-1处的字符,所以如果参数8是,您的字符串将扩展到索引8-1处的字符7。当然,我们不想对8进行硬编码。 ,因为如果您的字符串更改,此代码可能会中断,因此让我们使用字符串的长度;在这种情况下为9,因此您所需要做的就是从长度中减去1,并将其作为第二个参数传递给子字符串;


这是适用于任何字符串的通用代码:

    //get length of our string
    int userAnswerLength = getUserAnswerString.length();

    //get all the characters except for the last one ans assign to your variable
    //getUserAnswerString will be "NEVERMIN" after the below line executes
    getUserAnswerString = getUserAnswerString.substring(0, userAnswerLength - 1);

08-18 15:52
查看更多