通过android studio使用子字符串时出错

时间:2014-02-22 18:34:48

标签: java android string methods android-studio

尝试删除最后一个字符时,我收到错误

Cant resolve method substring(int. int) 

我正在尝试为TextView实现此问题是一个问题,我不确定,因为我能够成功使用.append().setText()方法。

是否有可能需要使用某种类型的android导入才能使用substring方法?

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

2 个答案:

答案 0 :(得分:0)

这就是你应该这样做的方式

getUserAnswer.getText().substring(userAnswerLengthMin, userAnswerLengthMax);

答案 1 :(得分:0)

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

getUserAnswerString = "Nevermind";

enter image description here

长度为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并将其作为第二个参数传递给substring;

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

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