Введение
В этом практическом занятии (лабораторной работе) вы научитесь проверять, заканчивается ли строка в Java определенным суффиксом. Это фундаментальный навык для таких задач, как проверка типов файлов или разбор данных на основе их окончания. Вы изучите метод endsWith(), поймете, чувствителен ли он к регистру, и узнаете, как сочетать его с методом startsWith() для более сложных проверок. С помощью практических примеров вы получите практический опыт использования этих методов обработки строк в своих Java-программах.
Использование метода endsWith() для проверки суффикса
На этом этапе мы рассмотрим, как использовать метод endsWith() в Java для проверки, заканчивается ли строка определенным суффиксом. Это распространенная задача, когда вам нужно проверить расширения файлов, найти определенные шаблоны или обработать данные на основе их окончания.
Метод endsWith() является частью класса String в Java. Он принимает один аргумент, который представляет собой суффикс, наличие которого вы хотите проверить, и возвращает логическое значение: true, если строка заканчивается указанным суффиксом, и false в противном случае.
Создадим простую Java-программу, чтобы показать, как работает метод endsWith().
Откройте файл
HelloJava.javaв редакторе WebIDE. Если он не открыт, вы можете найти его в проводнике файлов слева, в папкеproject.Замените существующий код в файле
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().
- Мы объявляем три переменные типа
Сохраните файл
HelloJava.java(Ctrl+S или Cmd+S).Теперь скомпилируем программу. Откройте терминал внизу WebIDE и убедитесь, что вы находитесь в директории
~/project. Затем выполните следующую команду:javac HelloJava.javaЕсли нет ошибок, компиляция завершится без сообщений, и в директории
~/projectбудет создан файлHelloJava.class.Наконец, запустите скомпилированную программу с помощью команды
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".
Изменим нашу программу, чтобы увидеть, как работает проверка с учетом регистра.
Откройте файл
HelloJava.javaв редакторе WebIDE.Замените существующий код следующим:
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()как с нижним, так и с верхним регистром суффиксов, чтобы показать, что метод чувствителен к регистру.Сохраните файл
HelloJava.java.Скомпилируйте измененную программу в терминале:
javac HelloJava.javaЗапустите скомпилированную программу:
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().
Откройте файл
HelloJava.javaв редакторе WebIDE.Замените существующий код следующим:
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только в том случае, если оба условия истинны.
- Мы используем метод
Сохраните файл
HelloJava.java.Скомпилируйте программу в терминале:
javac HelloJava.javaЗапустите скомпилированную программу:
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() для проверки, начинается ли и заканчивается ли строка определенными префиксами и суффиксами, показав, как эти методы можно использовать вместе для более сложной валидации строк.



