Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как проверить, содержит ли строка подстроку

Короткий ответ

Метод contains() возвращает true или false:

void main() {
    String text = "Java is fun";
 
    IO.println(text.contains("is"));
    IO.println(text.contains("Python"));
}

Результат:

true
false

Где находится подстрока

indexOf() возвращает позицию первого вхождения или -1:

void main() {
    IO.println("Java is fun".indexOf("is"));
    IO.println("Java is fun".indexOf("Python"));
}

Результат:

5
-1

Без учёта регистра

Приведите обе строки к одному регистру:

void main() {
    String text = "Hello World";
    String query = "WORLD";
 
    IO.println(text.toLowerCase(Locale.ROOT).contains(query.toLowerCase(Locale.ROOT)));
}

Результат:

true

Одно из нескольких слов

Проверьте список слов через anyMatch():

void main() {
    var banned = List.of("spam", "scam");
    String message = "This is not a scam";
 
    IO.println(banned.stream().anyMatch(message::contains));
}

Результат:

true

Частая ошибка

Путать contains() и matches(). matches() проверяет, что регулярному выражению соответствует вся строка целиком, а не её часть:

void main() {
    IO.println("order 42".matches("\\d+"));
    IO.println("order 42".matches(".*\\d+.*"));
}

Результат:

false
true

Функции из этого ответа

  • String.contains() — Проверяет, есть ли в строке подстрока.
  • String.indexOf() — Находит позицию первого вхождения символа или подстроки.
  • String.matches() — Проверяет, соответствует ли вся строка регулярному выражению.
  • String.toLowerCase() — Возвращает копию строки, где все буквы строчные.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.