我正在尝试制作一个应用程序,您可以通过 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 语句。
由于我尝试了多种组合,类似的组合会产生一个空的 toast 。 (不记得到底做了什么,但这并不重要,因为它也不正确)
我的代码有什么问题吗?字符串都是数字,但我发现在字符串上进行替换是最简单的,如果您知道更好的实现,请成为我的客人。输入应该是 9 个数字,输出应该是 11 个数字(我用 3876 替换 06,这样我就得到了 2 个额外的数字)。
(我已经搜索过类似的问题,并且进行了一些尝试,但没有成功)
最佳答案
好的,首先,你确定你的字符串 f.ex 是正确的吗? 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);
}
关于java - 尝试替换 editText 字符串开始时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52766633/