Выбрать и вывести из строки слова от a до h

97
27 февраля 2021, 16:00

Вводится одна строка целиком. Необходимо вывести те слова данной строки, которые начинаются с буквы из интервала от a до h.

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

Выводить слова необходимо каждый раз с новой строки.

Пример
Ввод: It becomes dark very fast here
Вывод: becomes
       dark
       fast
       here

Вроде бы я как я понял, сначала нужно перевести строку в массив строк с помощью регулярного выражения, а затем нужен цикл, в котором перебирая строки в массиве, с помощью charAt() нужно получить первую букву, которую уже проверять на верность условию и если всё ок - выводить. Вот как раз цикл и не могу придумать...подскажите, как лучше его сделать?

public class TestClass {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.nextLine();
        String[] strings = s.split(" ");
        System.out.println(Arrays.toString(strings));
        // вероятно, здесь должен быть цикл       
    }
}
Answer 1
for(String str : strings)
    if(str.matches("^[a-h]\\w*"))
        System.out.println(str);

Если нужно, чтобы включались слова, оканчивающиеся на 's вместе с одним словом, которое идёт сразу после вышеупомянутого:

String s = "dark's ana here come shot";
Pattern pattern = Pattern.compile("(?<=^| )(\\w+'s )?[a-h]\\w*(?= |$)");
Matcher matcher = pattern.matcher(s);
while(matcher.find())
    System.out.println(matcher.group());
Answer 2

Получаем из строки массив слов, и помещаем его в TreeSet. Применяем метод TreeSet.subSet:

String str = "It becomes dark very fast here";
TreeSet<String> set = Arrays.stream(str.split("\\s+"))
        .collect(Collectors.toCollection(TreeSet::new));
// поиск слов в сете от 'a' до 'h'
System.out.println(set.subSet("a", "hz")); // [becomes, dark, fast, here]
READ ALSO
Ошибка 404 после авторизации

Ошибка 404 после авторизации

Я когда хочу админом войти на страницу в своем проекте он выдает ошибку 404

114
Как создать двухмерный штрихкод в виде векторного изображения?

Как создать двухмерный штрихкод в виде векторного изображения?

Я создаю двухмерные штрихкоды с помощью API-интерфейса iText, но они попадают в PDF-документ как растровые изображения, а во время печати на принтерах...

92
Как вытащить определенное значение из map

Как вытащить определенное значение из map

Есть класс Person, он имеет три поля - name, age и surnameЯ создаю HashMap из Person'ов и хочу вытащить все surname записать в отдельный лист

162
Непонятный класс EntrySet

Непонятный класс EntrySet

В java создаю такую конструкциюПо документации метод entrySet возвращает объект типа Set, но под отладчиком что-то непонятное

97