Java 尝试替换editText字符串开始时出错
我正在尝试制作一个应用程序,您可以通过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")) {
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