이번에 개선 중인 서비스에서 카카오 알림톡 템플릿을 수정하기 위해 코드를 뒤적거리다가 새로운 지식을 알게 되어 기록한다.
@Override
public String content(final Object... args) {
validateTemplateParameters(4, args);
return """
(...템플릿 내용...)
\s
안녕하세요,
%s %s님!
\s
아래 '답장 보러 가기' 버튼을 누르시면 편지함으로 이동합니다.
\s
(...템플릿 내용...)
""".formatted(args);
}
이런 식으로 작성되어 있는데,
처음 보는 형식이 있길래 서칭을 해봤다.
📌 텍스트 블록
- """ (큰따옴표 3개) → 자바 15부터 도입된 멀티라인 문자열 (Text Block) 을 의미.
- 줄바꿈(\n) 없이 여러 줄을 깔끔하게 작성 가능.
- 기존처럼 "\n"을 사용해서 개행할 필요 없이 그대로 유지됨.
✅ 즉, " "를 여러 개 연결하거나 + 연산자를 사용하지 않아도, """를 사용하면 문자열을 여러 줄로 표현할 수 있다.
📌 특수 이스케이프 문자
- \s는 자바 15부터 지원되는 특수 이스케이프 문자야.
- 공백 한 칸(Space)로 변환됨.
- 보통 문자열 내부에서 불필요한 개행을 막고, 가독성을 높이기 위해 사용.
왜 \s를 사용했을까
- 만약 \s 없이 그냥 줄바꿈하면, 문자열의 앞이나 뒤에서 공백이 삭제될 가능성이 있음.
- \s를 넣어주면, 빈 줄이 의도한 대로 유지되면서, 가독성을 높여줌.
Java 15 이전 버전에서 대체 방법
더보기
자바 15 이하에서는 \s 대신 일반적인 공백 문자 " "(스페이스)나 \n을 직접 사용해야 한다.
🔹 대체 방법 1: 그냥 " "(스페이스) 사용하기
return """
...
안녕하세요,
%s %s님!
아래 '답장 보러 가기' 버튼을 누르시면 편지함으로 이동합니다.
...
""".formatted(args);
- \s 없이 그냥 줄바꿈하면, 줄바꿈이 유지됨.
- 공백을 유지하고 싶다면 그냥 " "(스페이스)를 직접 추가하면 됨.
🔹 대체 방법 2: \n(개행 문자) 사용하기 (Java 13 이하도 지원됨)
return ...
+ "안녕하세요,\n"
+ "%s %s님!\n\n"
+ "아래 '답장 보러 가기' 버튼을 누르시면 편지함으로 이동합니다.\n\n"
+ ...
.formatted(args);
- \n을 사용하면 줄바꿈을 명확하게 지정 가능.
- 자바 13 이하에서도 정상적으로 동작.
결론
Java 버전\s 사용 가능 여부대체 방법Java 15 이상 | ✅ 가능 | \s 사용 가능 |
Java 14 이하 | ❌ 불가능 | " "(스페이스) 또는 \n 사용 |
만약 Java 14 이하를 지원해야 한다면, \s를 빼고 " "(스페이스)나 \n을 직접 넣어주는 게 안전하다.
이상 가벼운 지식 정리..
'대충 넘어가지 않는 습관을 위한 기록' 카테고리의 다른 글
이미지 업로드 비동기 처리 개선 - Kotlin (0) | 2025.04.22 |
---|---|
Slack Webhook을 활용한 자동화 레포트 전송 - Spring Boot (1) | 2025.03.12 |
운영 서버 스웨거 사용 제한 (0) | 2025.02.12 |
AWS 해킹 기록.. (0) | 2025.02.12 |
CloudFront 적용기 [AWS - S3] (0) | 2025.02.06 |