Регулярные выражения(Regex)

182
23 августа 2021, 12:30

Помогите решить задачу с регулярными выражениями, уж очень тяжко мне они даются.

Задание:

Задание должно быть решено с помощью регулярных выражений без использования контейнерных классов.

Вход: текст (может состоять из латиницы и кириллицы). Выход: исходный текст, но регистр первого символа каждого слова, которое состоит из трех и более символов, должен быть интвертирован.

Словом считать последовательность содержащую только буквы (все остальные символы в состав слова не входят). Создать статический метод convert, который преобразовывает вход в выход.

Заглушка метода

public static String convert(String input) {
...
}

Пример Input data

When I was younger
I never needed

Пример Output

when I Was Younger
I Never Needed
Answer 1

Вот так можно сделать:

public class Test {
public static void main(String[] args) {
    System.out.println(convert("When I was younger I never needed"));
}
public static String convert(String input) {
    StringBuilder sb = new StringBuilder(input);
    Pattern p = Pattern.compile("[\\W&&[\\d]]?[\\w&&[\\D]]+");
    Matcher m = p.matcher(input);
    while (m.find()) {
        if (m.group().length() >= 3) {
            if (Character.isUpperCase(sb.charAt(m.start()))) {
                sb.setCharAt(m.start(), Character.toLowerCase(sb.charAt(m.start())));
            } else {
                sb.setCharAt(m.start(), Character.toUpperCase(sb.charAt(m.start())));
            }
        }
    }
    return sb.toString();
  }
}

Если вставить цифры, или другие символы внутрь слов (например строка: When I wa%s you35nger I ne$ver nee-ded), то они также считаются разделителями слов и программа справляется с этим. В итоге получается строка: when I wa%s You35Nger I ne$Ver Nee-Ded

READ ALSO
Android запуск фоновых процессов, Worker

Android запуск фоновых процессов, Worker

У меня такой вопрос, в приложении нужно реализовать работу фоновых процессов по периодическому определению координат пользователей

219
Присоединение ОДНОГО поля из другой Entity

Присоединение ОДНОГО поля из другой Entity

Я реализую RESTFul сервис, позволяющий возвращать информацию о пользователяхУ меня есть два Entity, которые цепляются из БД

140
Как переделать программу, чтобы она могла работать с несколькими запросами?

Как переделать программу, чтобы она могла работать с несколькими запросами?

Есть программа, которой подается на вход 2 натуральных числа: размеры таблицы (а*b) и строка вида ADD (число) (число)Оба числа являются координатами...

93
Ошибки в пути к картинке, как исправить

Ошибки в пути к картинке, как исправить

У меня есть отдельный файл с картинками под названием src, в котором файл img и там картинкиФайл Src я назначил права Resources Root

298