#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+","");
Комментариев нет:
Отправить комментарий