Как проверить начало или конец строки
Короткий ответ
Используйте startsWith() и endsWith():
void main() {
String file = "report.pdf";
IO.println(file.startsWith("rep"));
IO.println(file.endsWith(".pdf"));
}Результат:
true
trueБез учёта регистра
У этих методов нет варианта без регистра, поэтому сначала приведите строку к нижнему регистру:
void main() {
String file = "PHOTO.JPG";
IO.println(file.toLowerCase(Locale.ROOT).endsWith(".jpg"));
}Результат:
trueНесколько вариантов
Проверить сразу несколько окончаний удобно через поток:
void main() {
var images = List.of(".png", ".jpg", ".gif");
String file = "cat.gif";
IO.println(images.stream().anyMatch(file::endsWith));
}Результат:
trueС позиции
startsWith() принимает второй аргумент — с какого символа начинать проверку:
void main() {
IO.println("+7-900-123".startsWith("900", 3));
}Результат:
trueЧастая ошибка
Проверять расширение файла через contains(). Строка "pdf-viewer.exe" содержит pdf, но это не PDF:
void main() {
String file = "pdf-viewer.exe";
IO.println(file.contains("pdf"));
IO.println(file.endsWith(".pdf"));
}Результат:
true
falseФункции из этого ответа
- String.startsWith() — Проверяет, начинается ли строка с указанного префикса.
- String.endsWith() — Проверяет, заканчивается ли строка указанным суффиксом.
- String.toLowerCase() — Возвращает копию строки, где все буквы строчные.