как принять адрес электронной почты или номер телефона в одном тексте редактирования

У меня есть только одно текстовое поле для редактирования, чтобы принять адрес электронной почты или номер телефона. как изменить тип ввода на основе 1-го символа? на основе пользовательского ввода мне нужно выполнять разные операции. Главное, я должен определить, является ли это адресом электронной почты или номером телефона. как это сделать?


person krishnamurthy    schedule 15.03.2018    source источник


Ответы (2)


В вашем EditText установите TextWatcher, который вызывает функцию, чтобы проверить, является ли текст электронной почтой или номером телефона.

Получите текст из вашего TextView, например:

String text = textView.getText().toString();

Добавление слушателя в ваш TextView :

textView.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(....){}

        @Override
        public void beforeTextChanged(...){}

        @Override
        public void afterTextChanged(Editable s) {
            if(isEmail(text)){//do your stuff}
            if(isPhone(text)){//do your stuff}  
        }
}

Ваши методы будут выглядеть примерно так:

public static boolean isEmail(String text) {
    String expression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";
    Pattern p = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
    Matcher m = p.matcher(text);
    return m.matches();
}

public static boolean isPhone(String text) {
   if(!TextUtils.isEmpty(text)){
       return TextUtils.isDigitsOnly(text);
   } else{
       return false;
   }
}

Это может быть невозможно, просто проверив первую цифру. Хотя вы можете поместить проверки внутри метода onTextChanged.

person Kartik Shandilya    schedule 15.03.2018

Ответ Ново Лукаса правильный.

Мои взгляды:

Во-первых, вы не можете узнать тип ввода, используя первую букву, потому что некоторые адреса электронной почты начинаются с цифр.

При нажатии кнопки вы можете определить тип, зная, содержит ли текст только цифры или буквенно-цифровые символы. Для получения дополнительной информации о коде вы можете найти его в Google. Я постараюсь добавить код через некоторое время. Удачи

person Daksh Agrawal    schedule 15.03.2018