Поиск слова в строке по букве

195
01 февраля 2021, 07:10

Условие:

Написать программу, которая ищет в строке, введенной пользователем, и выводит на экран слова, начинающиеся с определенной буквы. Буква вводится пользователем.

Как осуществлять ввод вывод я знаю. Дальше, насколько я понимаю, нужно посимвольно разбить слова и проверять все символы после пробела и если буква после пробела такая же, как заданная, то выводить все символы до следующего пробела. Но как это всё прописать в коде, я слабо представляю.

Answer 1

Данную программу я вижу вот так:

public static void main(String[] args) {
        System.out.println("Введите строку:");
        Scanner scanner = new Scanner(System.in);
        String line = scanner.nextLine();
        System.out.println("Введите букву:");
        String letter = scanner.next();
        Pattern pattern = Pattern.compile("\\p{IsCyrillic}+");
        Matcher matcher = pattern.matcher(line);
        while (matcher.find()) {
            String word = matcher.group();
            if(word.toLowerCase().startsWith(letter))
                System.out.println(word);
        }
    }

1) Сканируем две строки с помощью Scanner.
2) С помощью .split() разделяем строку на слова, которые заносятся в массив String[] arrayString (.split() возвращает массив).
3) С помощью for-each loop (for (String word : arrayString)) проверяем каждый элемент в массиве (т.к. слово может быть с заглавной букву - используем .toLowerCase()), начинается ли слово с буквы (.startsWith(letter)), которая была введена пользователем ранее.
4) Если такое слово найдено, то выводим его на экран.

Answer 2

Можно на примитивном уровне:

    String string = "cat bee dog cow cat dog fly";
    char firstLetter = 'c';
    char[] chars = string.toCharArray();
    String word = "";
    for (int i = 0; i < chars.length - 1; i++) {
        if (chars[i] == ' ' && !word.equals("")) {
            if (word.toCharArray()[0] == firstLetter) {
                System.out.println(word);
            }
            word = "";
            continue;
        }
        word = word.concat(String.valueOf(chars[i]));
    }

Результат

cat
cow
cat

Возможно, из-за того, что первая буква вводится пользователем строку

if (word.toCharArray()[0] == firstLetter)

надо будет заменить на

if (String.valueOf(word.toCharArray()[0]).equals(firstLetter))

Ещё лучше, заменить её сразу на

if (word.startsWith(prefix)) //String prefix = "ca";  --> result: cat cat

Тогда будет проверяться начинается ли слово с введенной строки, не только буквы.

READ ALSO
Вывод объектов из базы в случайном порядке и без повтора

Вывод объектов из базы в случайном порядке и без повтора

Необходимо реализовать web приложение с голосованием используя springКандидаты загружаются в базу данных через специальную форму

96
Не работает метод onBackPressed Android

Не работает метод onBackPressed Android

Есть проект "написанный" в Buildbox и импортированный в Android StudioВ самой студии была создана Activity с кнопкой, при нажатии на которую открывается...

120