Страницы

Поиск по вопросам

среда, 29 января 2020 г.

Как в EditText сделать форматированный ввод номер мобильного телефона?[Android]

#java #android #android_edittext


Как на андроид EditText сделать так чтобы ввод осуществлялся по следующему шаблону:
+7(927)444-44-44

И далее из него получить:
9274444444 
Заранее спасибо!    


Ответы

Ответ 1



Один в один вопрос

Ответ 2



Даю наводку: TextWatcher. Полагаю, с дальнейшим вы в состоянии разобраться самостоятельно.

Ответ 3



вот мое решение aq.id(R.id.etPhone).getEditText().addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { String formatted; String regex1 = "(\\+\\d)(\\d{3})"; String regex2 = "(.+ )(\\d{3})$"; String regex3 = "(.+\\-)(\\d{2})$"; // буду реализвывать ввод телефона в формате +х (ххх) ххх-хх-хх if (s.toString().matches(regex1)) { formatted = String.valueOf(s).replaceFirst(regex1, "$1 ($2) "); aq.id(R.id.etPhone).getEditText().setText(formatted); aq.id(R.id.etPhone).getEditText().setSelection(formatted.length()); } else if (s.toString().matches(regex2)) { formatted = String.valueOf(s).replaceFirst(regex2, "$1$2-"); aq.id(R.id.etPhone).getEditText().setText(formatted); aq.id(R.id.etPhone).getEditText().setSelection(formatted.length()); } else if (s.toString().matches(regex3) && s.length() < 18) { formatted = String.valueOf(s).replaceFirst(regex3, "$1$2-"); aq.id(R.id.etPhone).getEditText().setText(formatted); aq.id(R.id.etPhone).getEditText().setSelection(formatted.length()); } } }); а достать цифры можно так String number = aq.id(R.id.etPhone).getEditText().getText().toString().replaceAll("^(\\+7)|\\D+","");

Комментариев нет:

Отправить комментарий