Выбор подстроки в EditText Android - PullRequest
0 голосов
/ 02 января 2019

Есть ли способ захвата текста после нажатия # до нажатия клавиши пробела в EditText? Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 02 января 2019

Сначала присоедините addTextChangedListener к вашему edittext и вызовите метод, который будет соответствовать определенному условию, как показано ниже:

EditText editText = (EditText)findViewById(R.id.editText);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
    // TODO Auto-generated method stub
}

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    // TODO Auto-generated method stub
}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {

    try {
    String capturedString = getText(s);
    } catch (Exception e) {
    e.printStackTrace();
    }
} 
});

Приведенный выше код будет пытаться заполнить capturedString каждый раз, когда новый символдобавлено в поле edittext.

Теперь напишите другую функцию getText(), как показано ниже:

public String getText(String s) {
    String startChar = "#";
    String endChar   = " ";
    String output = getStringBetweenTwoChars(s, startChar, endChar);
    System.out.println(output);
}

Этот метод будет соответствовать указанной строке для # и space.Если найдено, он вернет захваченную строку, если не найден, он выдаст ошибку (Эта ошибка будет зафиксирована в блоке catch приведенного выше кода)

Теперь, наконец, напишите нижеприведенную функцию, которая будет приниматьпоследовательность символов и два символа, сопоставьте последовательность символов с предоставленными символами и верните строку между ними:

public String getStringBetweenTwoChars(String input, String startChar, String endChar) {
try {
    int start = input.indexOf(startChar);
    if (start != -1) {
        int end = input.indexOf(endChar, start + startChar.length());
        if (end != -1) {
            return input.substring(start + startChar.length(), end);
        }
    }
} catch (Exception e) {
    e.printStackTrace();
}
return input;
}

Надеюсь, это поможет:)

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