• Как усовершенствовать код, чтобы можно было работать со знаками препиания?

    Erik_Mironov
    @Erik_Mironov
    Старые вопросы: *Dies from cringe*
    Вы можете использовать просмотр вперед и просмотр назад, которые являются функциями регулярных выражений.
    Вы даже можете поместить плейсхолдеры, например %1$s и использовать String.format для замены плейсхолдеров на фактическую строку, которую вам нужно использовать.

    Простое решение для Java 8 и новее:

    public class Main {
        public static final String DELIMITER = "((?<=%1$s)|(?=%1$s))";
    
        public static void main(String[] args) {
            String task = "Заменить, в тексте все! слова длиной? не больше 6 символов; в обратном порядке начинающиеся на: согласную букву ";
            String[] arr = task.split(String.format(DELIMITER, "[:?;!. ]"));
            String result = Arrays.stream(arr)
                    .map(s -> !check(s.charAt(0)) && !length(s) ? reverse(s) : s)
                    .collect(Collectors.joining());
            System.out.println(result); /* Заменить, в етскет есв! аволс йонилд? ен ешьлоб 6 символов; в обратном порядке начинающиеся ан: согласную увкуб */
    
        }
    
        public static boolean check(char c) {
            return "аиеёоуыэюя".indexOf(c) > -1;
        }
    
        public static boolean length(String s) {
            return s.length() > 6;
        }
    
        public static String reverse(String s) {
            return new StringBuilder(s).reverse().toString();
        }
    }
    Ответ написан
    Комментировать