- Java Проверяет строку на наличие строчной/прописной буквы, Специального символа и цифры
- 1. Обзор
- 2. Использование Регулярных Выражений
- 2.1. Одно Регулярное выражение
- 3. Использование ядра Java
- 4. Заключение
- Читайте ещё по теме:
- Ищем символы в строке Java
- Метод indexOf()
- Метод contains
- 3.6. Java примеры – Нахождение символа или слова в строке
- Решение 1: когда нужно найти индекс первого вхождения
- Результат
- Решение 2: когда нужно узнать есть ли в строке данный символ или слово
- Результат
- Оглавление
Java Проверяет строку на наличие строчной/прописной буквы, Специального символа и цифры
Узнайте, как проверить, содержит ли строка хотя бы одну заглавную букву, строчную букву, цифру или специальный символ в Java.
1. Обзор
В этом кратком руководстве мы проиллюстрируем, как мы можем проверить, содержит ли строка по крайней мере один из следующих символов: заглавная буква, строчная буква, цифра или специальный символ в Java .
2. Использование Регулярных Выражений
Одним из способов выполнения нашей проверки является использование регулярных выражений. Чтобы ознакомиться с регулярными выражениями, пожалуйста, ознакомьтесь с этой статьей .
Прежде всего, давайте определим регулярное выражение для каждой из требуемых групп символов. Поскольку регулярные выражения фиксированы, нет необходимости оценивать их при каждом запуске, поэтому мы скомпилируем их, прежде чем сравнивать с ними :
Кроме того, мы должны создать простой метод, который мы будем использовать, чтобы проверить, соответствует ли наша строка | условиям:
private static boolean isMatchingRegex(String input) < boolean inputMatches = true; for (Pattern inputRegex : inputRegexes) < if (!inputRegex.matcher(input).matches()) < inputMatches = false; >> return inputMatches; >
2.1. Одно Регулярное выражение
Предыдущий пример довольно удобочитаем и позволяет нам легко использовать только некоторые шаблоны, если это необходимо. Но в случае, когда мы заботимся только о выполнении всех условий, гораздо эффективнее использовать одно регулярное выражение.
Таким образом, нам не понадобится статический блок для инициализации и компиляции всех наших многочисленных выражений. Кроме того, не было бы необходимости перебирать их все и находить, какие совпадения, а какие нет.
Все, что нам нужно сделать, это объявить наше регулярное выражение:
А затем скомпилируйте и сравните его:
@Test public void givenSingleRegex_whenMatchingCorrectString_thenMatches()
Есть несколько вещей, на которые мы должны обратить внимание в отношении нашего регулярного выражения.
Во-первых, мы использовали положительный внешний вид ( ?=X ) для каждой группы символов . Это означает, что мы ожидаем , что X будет найден после начала строки (помеченной ^ ), чтобы соответствовать, но мы не хотим идти в конец X , скорее мы хотим остаться в начале строки.
Еще следует отметить, что на этот раз мы не использовали [A-Z] или [az] для групп букв, а вместо этого использовали \p и \p . Они будут соответствовать любой букве (в нашем случае заглавной и строчной соответственно) из любого языка, а не только английского.
3. Использование ядра Java
Давайте теперь посмотрим, как мы можем выполнить ту же проверку, если мы не хотим использовать регулярные выражения. Мы воспользуемся классами Character и String и их методами, чтобы проверить, присутствуют ли все необходимые символы в нашей String :
private static boolean checkString(String input) < String specialChars __cf_email__" data-cfemail="406100" href="/cdn-cgi/l/email-protection">[email protected]#$%^&*()-_=+\\|[;:'\",/?"; char currentCharacter; boolean numberPresent = false; boolean upperCasePresent = false; boolean lowerCasePresent = false; boolean specialCharacterPresent = false; for (int i = 0; i < input.length(); i++) < currentCharacter = input.charAt(i); if (Character.isDigit(currentCharacter)) < numberPresent = true; >else if (Character.isUpperCase(currentCharacter)) < upperCasePresent = true; >else if (Character.isLowerCase(currentCharacter)) < lowerCasePresent = true; >else if (specialChars.contains(String.valueOf(currentCharacter))) < specialCharacterPresent = true; >> return numberPresent && upperCasePresent && lowerCasePresent && specialCharacterPresent; >
Здесь мы должны отметить несколько вещей. Основная идея заключается в том, что мы перебираем нашу Строку и проверяем, соответствуют ли ее символы требуемым типам. Используя класс Character , мы можем легко проверить, является ли определенный символ цифрой, прописным или строчным символом.
К сожалению, нет подобного метода, который бы подсказал нам, имеем ли мы дело с одним из специальных символов. Таким образом, это означает, что нам нужно использовать другой подход.
Мы создали строку |, содержащую все необходимые специальные символы, а затем проверили, содержит ли она наш конкретный символ.
4. Заключение
В этой краткой статье мы показали, как проверить, содержит ли строка | необходимые символы. В первом сценарии мы использовали регулярные выражения, а во втором использовали основные классы Java .
Как обычно, полный исходный код можно найти на GitHub .
Читайте ещё по теме:
Ищем символы в строке Java
В этой статье мы рассмотрим, как выполнять поиск букв и других символов в строке Java, а также как проверять, находится ли нужный символ, буква или слово в строке, начиная с указанного индекса.
Строкой в Java называют упорядоченную последовательность символов. Как правило строка в Java — это один из основных носителей текстовой информации.
Для работы со строками в Java применяют классы String, StringBuilder и StringBuffer. Класс String включает методы, возвращающие позицию символа либо подстроки в строке: — indexOf() — для поиска с начала строки; — lastIndexOf() — для выполнения поиска с конца строки.
Таким образом, если метод indexOf() найдёт заданную букву, символ либо строку, он вернёт индекс, то есть порядковый номер. Если не найдёт, будет возвращено -1. Также он позволяет искать символ или букву, начиная с указанного индекса.
Кроме того, стоит добавить, что класс String включает в себя ещё и метод contains, возвращающий true, когда в строке содержится заданная последовательность символов. Этот метод рекомендуется использовать лишь тогда, когда вам просто нужно узнать о существовании подстроки в строке, при этом позиция не имеет значения.
Метод indexOf()
public int indexOf(char ch) public int indexOf(char ch, int fromIndex)public int indexOf(String s) public int indexOf(String s, int fromIndex)Соответственно, вызвать метод можно тоже несколькими способами:
int index = str1.indexOf(myChar); int index = str1.indexOf(myChar, start);int index = str1.indexOf(myString); int index = str1.indexOf(myString, start);Представьте, что нам нужно отыскать в строке индекс первого вхождения требуемого символа/буквы, а также нужного слова. Как уже было сказано выше, метод indexOf() вернёт нам индекс первого вхождения, а в случае неудачи — вернёт -1.
Посмотрите на следующий код:
public class Main < public static void main(String[] args) < String str = "Otus — онлайн-образование"; int indexM = str.indexOf("з"); // Ищем символ в строке int indexJava = str.indexOf("онлайн"); // Ищем слово в строке if(indexM == - 1) < System.out.println("Символ \"з\" не найден."); >else < System.out.println("Символ \"з\" найден, его индекс: " + indexM); >if(indexJava == - 1) < System.out.println("Слово \"онлайн\" не найдено."); >else < System.out.println("Слово \"онлайн\" найдено, его индекс: " + indexJava); >> >Результат получим следующий:
Символ "з" найден, его индекс: 18 Слово "онлайн" найдено, его индекс: 7Метод contains
Бывают ситуации, когда нам необходимо проверить, содержит ли наша строка конкретный символ/букву либо слово. Нижеследующий Java-код продемонстрирует и этот пример:
В этом случае результат будет следующим:
Слово "Otus" есть в строке str? Ответ: true Символ "z" присутствует в строке str? Ответ: falseКак видите, выполнять поиск букв и других символов в строке Java совсем несложно, и наши элементарные примеры убедительно это подтверждают. Если же вы хотите получить более продвинутые навыки по Java-разработке, добро пожаловать на наш курс:
3.6. Java примеры – Нахождение символа или слова в строке
Решение 1: когда нужно найти индекс первого вхождения
Следующий пример показывает как найти символ или слово в строке в Java с помощью метода indexOf(). Метод вернет индекс первого вхождения, если символ или слово не будет найдено, то метод вернет -1.
public class Example < public static void main(String[] args) < String str = "Привет, java-программист!"; int indexM = str.indexOf("м"); // Нахождение символа в строке int indexJava = str.indexOf("java"); // Нахождение слова в строке if(indexM == - 1) < System.out.println("Символ \"м\" не найден."); >else < System.out.println("Символ \"м\" найден в индексе " + indexM); >if(indexJava == - 1) < System.out.println("Слово \"java\" не найдено."); >else < System.out.println("Слово \"java\" найдено в индексе " + indexJava); >> >
Результат
Получим следующий результат:
Символ "м" найден в индексе 19 Слово "java" найдено в индексе 8
Решение 2: когда нужно узнать есть ли в строке данный символ или слово
Ниже продемонстрирован пример, который позволяет в Java узнать присутствует ли данный символ или слово в строке.
Результат
Получим следующий результат:
Слово "программист" есть в строке str? Ответ: true Символ "б" присутствует в строке str? Ответ: false
Оглавление
- 1. Java примеры – Использование кода на практике
- 2. Java примеры – Окружающая среда
- 2.1. Java примеры – Скомпилировать файл
- 2.2. Java примеры – Установить путь к нескольким классам
- 2.3. Java примеры – Отладка java-файла
- 2.4. Java примеры – Установить путь к классу
- 2.5. Java примеры – Просмотреть текущий путь класса
- 2.6. Java примеры – Установить назначение файла класса
- 2.7. Java примеры – Запустить скомпилированный java-файл класса
- 2.8. Java примеры – Узнать версию Java
- 2.9. Java примеры – Установить путь к классу в .jar-файле или .zip-файле
- 3. Java примеры – Строки
- 3.1. Java примеры – Сравнить две строки
- 3.2. Java примеры – Найти последнее вхождение подстроки внутри подстроки
- 3.3. Java примеры – Удалить нужный символ из строки
- 3.4. Java примеры – Заменить символ в строке
- 3.5. Java примеры – Вывод в обратном порядке
- 3.6. Java примеры – Нахождение символа или слова в строке
- 3.7. Java примеры – Разбиение строки на слова и символы
- 3.8. Java примеры – Преобразование строки в верхний регистр
- 3.9. Java примеры – Найти слово в строке
- 3.10. Java примеры – Сравнить производительность создания строки
- 3.11. Java примеры – Оптимизировать создание строк
- 3.12. Java примеры – Форматирование строк
- 3.13. Java примеры – Конкатенация строк
- 3.14. Java примеры – Определить код Юникода символа в строке
- 3.15. Java примеры – Буферизация строк
- 4. Java примеры – Массивы
- 4.1. Java примеры – Сортировка массива и поиск элемента
- 4.2. Java примеры – Метод сортировки массива, вставить элемент в массив
- 4.3. Java примеры – Размер двумерного массива
- 4.4. Java примеры – Обратный порядок массива, переворачиваем массив
- 4.5. Java примеры – Как выводить массивы и двумерные массивы в консоль
- 4.6. Java примеры – Найти максимальный и минимальный элемент массива
- 4.7. Java примеры – Соединить два массива в один
- 4.8. Java примеры – Как заполнить массив числами
- 4.9. Java примеры – Увеличить массив после инициализации
- 4.10. Java примеры – Сравнение двух массивов
- 4.11. Java примеры – Удаление элемента из массива
- 4.12. Java примеры – Удаление массива из другого массива
- 4.13. Java примеры – Одинаковые элементы массивов
- 4.14. Java примеры – Поиск в массиве
- 4.15. Java примеры – Равенство двух массивов
- 4.16. Java примеры – Сравнить массивы
- 5. Java примеры – Дата и время
- 5.1. Java примеры – Форматирование времени в формате AM-PM
- 5.2. Java примеры – Получение названия и номера текущего месяца
- 5.3. Java примеры – Получить текущее время в часах и минутах
- 5.4. Java примеры – Вывести текущее время и дату
- 5.5. Java примеры – Вывести текущее время в 24-часовом формате
- 5.6. Java примеры – Получить текущий месяц
- 5.7. Java примеры – Получить текущие секунды
- 5.8. Java примеры – Получить короткое название месяца
- 5.9. Java примеры – Получить день недели
- 5.10. Java примеры – Добавление времени к дате
- 5.11. Java примеры – Отображение времени в формате другой страны
- 5.12. Java примеры – Отображение времени на разных языках
- 5.13. Java примеры – Прокрутить часы и месяцы
- 5.14. Java примеры – Получить номер недели и месяц в году
- 5.15. Java примеры – Форматы текущей даты
- 6. Java примеры – Методы
- 6.1. Java примеры – Перезагрузка методов
- 6.2. Java примеры – Вывод массива с использованием метода
- 6.3. Java примеры – Решение Ханойской башни
- 6.4. Java примеры – Последовательность чисел Фибоначчи
- 6.5. Java примеры – Вычисление факториала числа
- 6.6. Java примеры – Переопределение метода
- 6.7. Java примеры – Вывод массива с использованием метода
- 6.8. Java примеры – Использование оператора break
- 6.9. Java примеры – Использование оператора continue
- 6.10. Java примеры – Использование метки в методе
- 6.11. Java примеры – Использование операторов enum и switch
- 6.12. Java примеры – Использование конструктора enum