Ошибка при попытке заменить начало строки editText - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь создать приложение, в котором вы получаете вход через компонент editText и помещаете его в строку, как показано ниже:

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

Теперь я хочу заменитьначало строки, если определенное условие выполняется следующим образом:

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

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

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

Я получаю сообщение об ошибке, говорящее, что индекс StringIndexIsOutOfBounds = 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 чисел (я заменяю 06 на 3876, поэтому я получаю там 2 дополнительных числа).

(Я искал SO для подобных проблем, и некоторые попытки были воссозданы,но не удачно)

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Хорошо, во-первых, вы уверены, что у вас правильная строка 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);
}
0 голосов
/ 11 октября 2018

Если вы получаете 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 пусто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...