Мені потрібен метод, який може сказати мені, чи має рядок не буквено-цифрові символи.
Наприклад, якщо рядок "abcdef?" або "abcdefà", метод повинен повертати true.
Мені потрібен метод, який може сказати мені, чи має рядок не буквено-цифрові символи.
Наприклад, якщо рядок "abcdef?" або "abcdefà", метод повинен повертати true.
Відповіді:
Використання Apache Commons Lang:
!StringUtils.isAlphanumeric(String)
Альтернативно перебирайте символи рядка та перевіряйте:
!Character.isLetterOrDigit(char)
У вас залишилася одна проблема: Ваш приклад рядка "abcdefà" буквено-цифровий, оскільки à
є літерою. Але я думаю, ви хочете, щоб його вважали небуквено-цифровим, так ?!
Тож ви можете замість цього використовувати регулярний вираз:
String s = "abcdefà";
Pattern p = Pattern.compile("[^a-zA-Z0-9]");
boolean hasSpecialChar = p.matcher(s).find();
Один із підходів полягає в тому, щоб зробити це за допомогою самого класу String. Скажімо, ваш рядок є приблизно таким:
String s = "some text";
boolean hasNonAlpha = s.matches("^.*[^a-zA-Z0-9 ].*$");
одне - використовувати зовнішню бібліотеку, таку як Apache commons:
String s = "some text";
boolean hasNonAlpha = !StringUtils.isAlphanumeric(s);
hasSpecialCharacters(String)
із власним визначенням "особливого".
String.matches(...)
у Java перевіряє, чи регулярний вираз відповідає цілому рядку.
boolean hasNonAlpha = ! … ^[A-Za-z0-9 ]*$
Ви повинні пройти кожен символ у рядку та перевірити Character.isDigit(char);
абоCharacter.isletter(char);
Крім того, ви можете використовувати регулярний вираз.
Використовуйте цю функцію, щоб перевірити, чи рядок є буквено-цифровим:
public boolean isAlphanumeric(String str)
{
char[] charArray = str.toCharArray();
for(char c:charArray)
{
if (!Character.isLetterOrDigit(c))
return false;
}
return true;
}
Це економить необхідність імпортувати зовнішні бібліотеки, і код можна легко змінити, якщо згодом ви захочете виконати різні перевірки перевірки на рядки.
Незважаючи на те, що це не буде працювати для чисел, ви можете перевірити, чи є однакові чи нічні, і великі регістри. Для не алфавітних символів вони будуть однаковими, слід перевірити число перед цим для кращого використання