Когда вы анализируете данные String
, вы должны удалить пробелы справа и слева. Это делается с помощью функции Strimg#trim
следующим образом:
password = password.trim();
Чтобы проанализировать каждый символ строки, вы можете преобразовать его в массив символов, чтобы вам было проще выполнить ваши требования:
char[] arrPassword = password.toCharArray();
Теперь вы можете оценить символ, используя следующие функции: Character#isUpperCase
, Character#isLowerCase
, Character#isDigit
.
И последнее, но не менее важное: у вас может быть строка со специальными символами, которые необходимо проверить, и проверьте, находится ли фактический символ, который вы оцениваете, внутри этой строки. Это может быть достигнуто с помощью String#indexOf
и String#valueOf
, это последнее для преобразования символа в тип String.
Вот пример кода для всего этого объяснения:
public static final String SPECIAL_CHARACTERS = "!@#$%^&*()~`-=_+[]{}|:\";',./<>?";
public static final int MIN_PASSWORD_LENGTH = 8;
public static final int MAX_PASSWORD_LENGTH = 20;
public static boolean isAcceptablePassword(String password) {
if (TextUtils.isEmpty(password)) {
System.out.println("empty string.");
return false;
}
password = password.trim();
int len = password.length();
if(len < MIN_PASSWORD_LENGTH || len > MAX_PASSWORD_LENGTH) {
System.out.println("wrong size, it must have at least 8 characters and less than 20.");
return false;
}
char[] aC = password.toCharArray();
for(char c : aC) {
if (Character.isUpperCase(c)) {
System.out.println(c + " is uppercase.");
} else
if (Character.isLowerCase(c)) {
System.out.println(c + " is lowercase.");
} else
if (Character.isDigit(c)) {
System.out.println(c + " is digit.");
} else
if (SPECIAL_CHARACTERS.indexOf(String.valueOf(c)) >= 0) {
System.out.println(c + " is valid symbol.");
} else {
System.out.println(c + " is an invalid character in the password.");
return false;
}
}
return true;
}
Предложение System.out.println(c + " is an invalid character in the password.");
предназначено только для проверки результата анализа действительного символа.