대충 넘어가지 않는 습관을 위한 기록

Java 15 - 멀티라인 문자열, 특수 이스케이프 문자

uhyvn 2025. 2. 27. 11:20

이번에 개선 중인 서비스에서 카카오 알림톡 템플릿을 수정하기 위해 코드를 뒤적거리다가 새로운 지식을 알게 되어 기록한다.

 

    @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을 직접 넣어주는 게 안전하다.

 

 

 

이상 가벼운 지식 정리..