尝试替换editText字符串开始时发生错误

时间:2018-10-11 18:20:32

标签: java android replace android-edittext

我正在尝试制作一个应用,您可以通过editText组件获得输入,并将其放入如下所示的字符串中:

number = findViewById(R.id.editText2); newNumber = number.getText().toString();

现在我想要的是在满足以下条件的情况下替换字符串start:

                if (number.getText().toString().substring(0, 1).equals("0")) {

                    newNumber = newNumber.replaceFirst("06", "3876");

                        Log.d("TAG", newNumber);
}

我收到一条错误消息,说StringIndexIsOutOfBounds index = 2 length = 0

我也这样尝试过:

 if (newNumber.startsWith("06")) {
                    newNumber = newNumber.replaceFirst("06", "3876");

                        Log.d("TAG", newNumber);
                        //Toast.makeText(MainActivity.this, newNumber, Toast.LENGTH_SHORT).show();
                    }
    else {
...
}

运行此查询时,我得到else语句。

由于我尝试了多种组合,因此类似的组合会产生空的吐司。 (不记得它到底是做什么的,但它也不重要,因为它也不对)

我的代码有什么问题?字符串是所有数字,但是我发现对字符串进行替换最简单,如果您知道更好的实现,请成为我的客人。输入应该是9个数字,输出应该是11个数字(我将3876替换为06,所以在那里得到了2个额外的数字)。

(我在SO中搜索了类似的问题,有些尝试是娱乐性的,但没有成功)

2 个答案:

答案 0 :(得分:1)

如果您获得StringIndexIsOutOfBounds index=2 length=0,则表示您的TextView没有用户预定义或提供的任何值。

为避免此错误,您应该验证String是否不为空:

if (!number.getText().toString().isEmpty() 
    && number.getText().toString().substring(0, 1).equals("0")) {
    // your code goes here...
}

请记住,只要TextView为空,就不会满足此条件。

答案 1 :(得分:1)

好吧,首先,您确定您具有正确的字符串f.ex。您的var中的06xxxxxx并且不为空?

检查您的字符串

!number.getText()。toString()。isEmpty()

比尝试以下方法:

EditText number = (EditText) findViewById(R.id.editText2);
String newNumber = number.getText().toString();

f(!number.getText().toString().isEmpty()){
        Log.d("TAG", newNumber);
        newNumber = newNumber.replaceFirst("06", "3876");
        Log.d("TAG", newNumber);
}