Обрезать домен из электронной почты и придать значение не более 10 цифр, если оно больше 10, и игнорировать ‘.’, если оно находится между ними. Как мы можем это сделать?

#java #substring #replaceall

#java #подстрока #замените все

Вопрос:

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

 if (sender.indexOf('@') != -1 ) {
     sender = sender.substring(0, Math.min(sender.indexOf("@"), 10));
}
  

ввод вывода
stackoverflow@gmail.com -> stackoverf

Теперь мне нужно добавить еще одно условие, если какое-либо ‘.’ присутствует между ними, игнорируйте это ‘.’. Например — stack.overflow@gmail.com -> stackoverf

Для этого я пытаюсь так :

 if (sender.indexOf('@') != -1 ) {
  if(sender.contains(".") {
     sender.replaceAll("\.","");
     sender = sender.substring(0, Math.min(sender.indexOf("@"), 10));
  }
}
  

Подходит ли этот подход или какой-то лучший подход, который мы можем реализовать.
Спасибо за ваши ответы.

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

1. Я бы сказал, что вы можете избавиться от этого if(sender.contains(".") . Это не replaceAll займет больше времени, если вы вызовете его без предварительной проверки (я бы сказал, что добавление одного вызова метода сделает его медленнее, если что-нибудь)

2. sender.replaceAll("\.",""); Вам нужно переназначить результат, чтобы sender он работал. Или вы делаете это на одном дыхании: sender = sender.replaceAll("\.","").substring(0, Math.min(sender.indexOf("@"), 10));

3. Хорошее решение, хотя sender = sender.replace(".",""); и вы полагаетесь на @ присутствие. Вы могли бы сделать sender = sender.replaceFirst("@.*$", "").replace(".", "").replaceFirst("^(.{10}).*$", "$1");

4. Большое вам спасибо, предложенное решение работает 🙂