у меня такой ввод
word w'ord wo'rd
Мне нужно преобразовать в верхний регистр оба символа в начале слова и сразу после символа '
(который может существовать несколько раз).
Мне нужен вывод (используя предыдущий пример):
word W'Ord Wo'Rd
Я пробовал с простым шаблоном
s.replaceAll("(\\w)(\\w*)'(\\w)", "$1");
но я не могу преобразовать группу 1 и 3 в верхний регистр
РЕДАКТИРОВАТЬ: После того, как я обнаружил небольшую ошибку в основном вопросе, я отредактировал код @Wiktor Stribizew, чтобы включить случай, который я пропустил.
Matcher m = Pattern.compile("(\\w)(\\w*)'(\\w)").matcher(s);
StringBuffer result = new StringBuffer();
while (m.find()) {
m.appendReplacement(result, m.group(1).toUpperCase() + m.group(2) + "'" + m.group(3).toUpperCase());
}
m.appendTail(result);
s = result.toString();