(전후) 주위 대문자로 문자를 대체자바 I 입력의 종류가 특정 문자
나는 단어의 시작에서와 바로'
문자 다음 문자를 모두 대문자로 변환 할 필요가
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();
. 이 코드를 실행하고 변환해야하는 모든 행의 출력을 보면, 주된 질문에서 약간의 실수를 발견했습니다. 나는 이제 내가 놓친 경우를 포함시키기 위해 주요 질문을 조정했다 –
문자열에 실패 : \t String s = "wo'rd w'ord wo'r'd"; – Optional
@DevilingMaster : 동일한 접근법이 여기 유효합니다 : 필요한 것을 그룹으로 캡처 한 다음, 필요한 동안 각 그룹을 'while'블록 내에서 조작하십시오. –