Как проверить, заканчивается ли строка в Java определенным суффиксом

JavaJavaBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы научитесь проверять, заканчивается ли строка в Java определенным суффиксом. Это фундаментальный навык для таких задач, как проверка типов файлов или разбор данных на основе их окончания. Вы изучите метод endsWith(), поймете, чувствителен ли он к регистру, и узнаете, как сочетать его с методом startsWith() для более сложных проверок. С помощью практических примеров вы получите практический опыт использования этих методов обработки строк в своих Java-программах.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/StringManipulationGroup(["String Manipulation"]) java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java/StringManipulationGroup -.-> java/strings("Strings") java/SystemandDataProcessingGroup -.-> java/string_methods("String Methods") subgraph Lab Skills java/strings -.-> lab-559982{{"Как проверить, заканчивается ли строка в Java определенным суффиксом"}} java/string_methods -.-> lab-559982{{"Как проверить, заканчивается ли строка в Java определенным суффиксом"}} end

Использование метода endsWith() для проверки суффикса

На этом этапе мы рассмотрим, как использовать метод endsWith() в Java для проверки, заканчивается ли строка определенным суффиксом. Это распространенная задача, когда вам нужно проверить расширения файлов, найти определенные шаблоны или обработать данные на основе их окончания.

Метод endsWith() является частью класса String в Java. Он принимает один аргумент, который представляет собой суффикс, наличие которого вы хотите проверить, и возвращает логическое значение: true, если строка заканчивается указанным суффиксом, и false в противном случае.

Создадим простую Java-программу, чтобы показать, как работает метод endsWith().

  1. Откройте файл HelloJava.java в редакторе WebIDE. Если он не открыт, вы можете найти его в проводнике файлов слева, в папке project.

  2. Замените существующий код в файле HelloJava.java следующим:

    public class HelloJava {
        public static void main(String[] args) {
            String fileName = "document.txt";
            boolean endsWithTxt = fileName.endsWith(".txt");
    
            System.out.println("Does '" + fileName + "' end with '.txt'? " + endsWithTxt);
    
            String imageUrl = "photo.jpg";
            boolean endsWithJpg = imageUrl.endsWith(".jpg");
    
            System.out.println("Does '" + imageUrl + "' end with '.jpg'? " + endsWithJpg);
    
            String documentName = "report.pdf";
            boolean endsWithDoc = documentName.endsWith(".doc");
    
            System.out.println("Does '" + documentName + "' end with '.doc'? " + endsWithDoc);
        }
    }

    В этом коде:

    • Мы объявляем три переменные типа String: fileName, imageUrl и documentName.
    • Мы используем метод endsWith() для каждой строки, чтобы проверить, заканчивается ли она определенным суффиксом (.txt, .jpg, .doc).
    • Результаты (true или false) сохраняются в логических переменных (endsWithTxt, endsWithJpg, endsWithDoc).
    • Наконец, мы выводим результаты в консоль с помощью метода System.out.println().
  3. Сохраните файл HelloJava.java (Ctrl+S или Cmd+S).

  4. Теперь скомпилируем программу. Откройте терминал внизу WebIDE и убедитесь, что вы находитесь в директории ~/project. Затем выполните следующую команду:

    javac HelloJava.java

    Если нет ошибок, компиляция завершится без сообщений, и в директории ~/project будет создан файл HelloJava.class.

  5. Наконец, запустите скомпилированную программу с помощью команды java:

    java HelloJava

    Вы должны увидеть вывод, похожий на следующий:

    Does 'document.txt' end with '.txt'? true
    Does 'photo.jpg' end with '.jpg'? true
    Does 'report.pdf' end with '.doc'? false

    Этот вывод показывает результаты наших проверок с использованием метода endsWith(), подтверждая, что document.txt заканчивается .txt, photo.jpg заканчивается .jpg, а report.pdf не заканчивается .doc.

Вы успешно использовали метод endsWith() для проверки суффиксов строк. Это фундаментальная операция, которую вы будете часто использовать в Java-программировании.

Проверка суффикса с учетом регистра

На предыдущем этапе мы узнали, как использовать метод endsWith(). Важно понимать, что метод endsWith() в Java выполняет сравнение с учетом регистра. Это означает, что строка "file.txt" заканчивается на ".txt", но не заканчивается на ".TXT".

Изменим нашу программу, чтобы увидеть, как работает проверка с учетом регистра.

  1. Откройте файл HelloJava.java в редакторе WebIDE.

  2. Замените существующий код следующим:

    public class HelloJava {
        public static void main(String[] args) {
            String fileName = "document.txt";
    
            // Case-sensitive check
            boolean endsWithLowercaseTxt = fileName.endsWith(".txt");
            System.out.println("Does '" + fileName + "' end with '.txt' (lowercase)? " + endsWithLowercaseTxt);
    
            // Case-sensitive check with uppercase suffix
            boolean endsWithUppercaseTxt = fileName.endsWith(".TXT");
            System.out.println("Does '" + fileName + "' end with '.TXT' (uppercase)? " + endsWithUppercaseTxt);
    
            String anotherFile = "IMAGE.JPG";
    
            // Case-sensitive check with lowercase suffix
            boolean endsWithLowercaseJpg = anotherFile.endsWith(".jpg");
            System.out.println("Does '" + anotherFile + "' end with '.jpg' (lowercase)? " + endsWithLowercaseJpg);
    
            // Case-sensitive check with uppercase suffix
            boolean endsWithUppercaseJpg = anotherFile.endsWith(".JPG");
            System.out.println("Does '" + anotherFile + "' end with '.JPG' (uppercase)? " + endsWithUppercaseJpg);
        }
    }

    В этом обновленном коде мы явно проверяем метод endsWith() как с нижним, так и с верхним регистром суффиксов, чтобы показать, что метод чувствителен к регистру.

  3. Сохраните файл HelloJava.java.

  4. Скомпилируйте измененную программу в терминале:

    javac HelloJava.java
  5. Запустите скомпилированную программу:

    java HelloJava

    Вы должны увидеть вывод, похожий на следующий:

    Does 'document.txt' end with '.txt' (lowercase)? true
    Does 'document.txt' end with '.TXT' (uppercase)? false
    Does 'IMAGE.JPG' end with '.jpg' (lowercase)? false
    Does 'IMAGE.JPG' end with '.JPG' (uppercase)? true

    Как вы можете видеть, метод endsWith() возвращает false, когда регистр суффикса не совпадает с регистром в строке.

Если вам нужно выполнить проверку без учета регистра, обычно вы преобразуете как строку, так и суффикс в один и тот же регистр (нижний или верхний) перед использованием метода endsWith(). Мы не будем рассматривать этот случай на данном этапе, но это полезный прием, который стоит запомнить.

Понимание чувствительности к регистру является важным при работе со строками в Java, так как многие методы для работы со строками по умолчанию чувствительны к регистру.

Комбинирование проверок методами startsWith() и endsWith()

В дополнение к проверке конца строки с помощью метода endsWith(), вы также можете проверить начало строки с использованием метода startsWith(). Этот метод работает аналогично endsWith(), принимая в качестве аргумента префикс и возвращающий true, если строка начинается с этого префикса, и false в противном случае. Как и endsWith(), метод startsWith() также чувствителен к регистру.

Комбинирование методов startsWith() и endsWith() позволяет выполнять более специфические проверки строк. Например, вы можете проверить, начинается ли имя файла с "temp_" и заканчивается ли оно ".log".

Обновим нашу программу, чтобы использовать оба метода startsWith() и endsWith().

  1. Откройте файл HelloJava.java в редакторе WebIDE.

  2. Замените существующий код следующим:

    public class HelloJava {
        public static void main(String[] args) {
            String logFileName = "temp_application_error.log";
    
            boolean startsWithTemp = logFileName.startsWith("temp_");
            boolean endsWithLog = logFileName.endsWith(".log");
    
            System.out.println("Does '" + logFileName + "' start with 'temp_'? " + startsWithTemp);
            System.out.println("Does '" + logFileName + "' end with '.log'? " + endsWithLog);
    
            // Combine checks using the logical AND operator (&&)
            boolean isTempLogFile = startsWithTemp && endsWithLog;
            System.out.println("Is '" + logFileName + "' a temporary log file? " + isTempLogFile);
    
            String anotherFile = "data_report.txt";
    
            boolean startsWithData = anotherFile.startsWith("data_");
            boolean endsWithTxt = anotherFile.endsWith(".txt");
    
            System.out.println("Does '" + anotherFile + "' start with 'data_'? " + startsWithData);
            System.out.println("Does '" + anotherFile + "' end with '.txt'? " + endsWithTxt);
    
            boolean isDataTxtFile = startsWithData && endsWithTxt;
            System.out.println("Is '" + anotherFile + "' a data text file? " + isDataTxtFile);
        }
    }

    В этом коде:

    • Мы используем метод startsWith() для проверки начала строк.
    • Мы применяем логический оператор И (&&) для объединения результатов методов startsWith() и endsWith(). Оператор && возвращает true только в том случае, если оба условия истинны.
  3. Сохраните файл HelloJava.java.

  4. Скомпилируйте программу в терминале:

    javac HelloJava.java
  5. Запустите скомпилированную программу:

    java HelloJava

    Вы должны увидеть вывод, похожий на следующий:

    Does 'temp_application_error.log' start with 'temp_'? true
    Does 'temp_application_error.log' end with '.log'? true
    Is 'temp_application_error.log' a temporary log file? true
    Does 'data_report.txt' start with 'data_'? true
    Does 'data_report.txt' end with '.txt'? true
    Is 'data_report.txt' a data text file? true

    Этот вывод демонстрирует, как можно использовать методы startsWith() и endsWith() вместе с логическими операторами для выполнения более сложных проверок строк.

Теперь вы знаете, как использовать методы startsWith() и endsWith() и комбинировать их для проверки как начала, так и конца строки. Эти методы являются фундаментальными инструментами для манипуляции и валидации строк в Java.

Резюме

В этом практическом занятии (лабораторной работе) мы узнали, как проверить, заканчивается ли строка в Java определенным суффиксом с использованием метода endsWith(). Мы изучили его базовое применение для проверки суффиксов, таких как расширения файлов, и увидели, как он возвращает логическое значение, показывающее, заканчивается ли строка заданным суффиксом.

Мы также изучили чувствительность метода endsWith() к регистру и узнали, как выполнять проверки без учета регистра, преобразуя строку и суффикс в один и тот же регистр перед сравнением. Наконец, мы объединили методы startsWith() и endsWith() для проверки, начинается ли и заканчивается ли строка определенными префиксами и суффиксами, показав, как эти методы можно использовать вместе для более сложной валидации строк.