Ограничивающие символы после точки - Java
Привет, я делаю проект для школы. Мы должны кодировать виртуальную банкоматную машину. Вы должны войти в систему со своей студенческой почтой.
Мой вопрос: как мне ограничить длину символа после точки (.)?
public boolean validUsername(String username) {
Boolean oneAT = false;
for (int i=0; i < username.length(); i++) {
if (username.contains("@") && username.contains(".") &&{
oneAT = true;
}
}
return oneAT;
}
Функция проверяет, введено ли имя пользователя, содержит @ и a .(Точка). Есть ли способ ограничить длину символа до трех после точки? В противном случае пользователь может написать johndoe@johndoemail.tugfksdoew
3 ответа
Проще проверить имя пользователя с помощью регулярного выражения
public boolean validUsername(String username) {
Pattern pattern = Pattern.compile("^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$");
Matcher matcher = pattern.matcher(username);
return matcher.matches();
}
Выражение проверяет, является ли имя пользователя действительным адресом электронной почты, и возвращает true, если это так.
Чтобы ответить на конкретный вопрос, вы можете ограничить размер, проверив размер подстроки после точки (при условии, что в строке есть только точка):
afterDot = username.substring(username.indexOf("."))
Но, как утверждает ZouZou, вы должны правильно подтвердить свой адрес электронной почты (есть несколько других вещей, которые нужно проверить). Посмотрите пример здесь: http://examples.javacodegeeks.com/core-java/util/regex/matcher/validate-email-address-with-java-regular-expression-example/
Это должно быть полезно:
if (username.contains("@") && username.contains(".") && ((username.length() - username.lastIndexOf(".") <= 3)) {
По сути, он проверяет, меньше ли разница длины строки и последнего вхождения точки, чем 3. Это также обрабатывает электронные письма, такие как john.doe@yahoo.com.