Java 尝试替换editText字符串开始时出错

Java 尝试替换editText字符串开始时出错,java,android,replace,android-edittext,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")) {

我正在尝试制作一个应用程序,您可以通过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);
}
 if (newNumber.startsWith("06")) {
                    newNumber = newNumber.replaceFirst("06", "3876");

                        Log.d("TAG", newNumber);
                        //Toast.makeText(MainActivity.this, newNumber, Toast.LENGTH_SHORT).show();
                    }
    else {
...
}
我得到一个错误,说StringIndexixOutOfBounds索引=2长度=0

我也这样试过:

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

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

                        Log.d("TAG", newNumber);
}
 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个额外的数字)


(我搜索过类似的问题,有些尝试是重新创建的,但没有成功)

如果您得到
StringIndexixOutofBounds index=2 length=0
,这意味着您的
TextView
没有任何预定义的值或用户提供的值

为避免此错误,您应该验证
字符串是否不是空的:

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

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

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

为避免此错误,您应该验证
字符串是否不是空的:

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

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

好的,首先,请确定您的字符串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);
}

好的,首先,你确定你的字符串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);
}

整个问题是我在onCreate中定义了EditText和String,而不是onClick方法。我一这样做,问题就解决了。谢谢Joschy和@piotr.witchen整个问题是我在onCreate中定义了EditText和String,而不是onClick方法。我一这样做,问题就解决了。谢谢Joschy和@piotr.wittchen