Java 메시지 형식

David Mbochi Njonge 2023년10월12일
  1. MessageFormat을 활용하여 큰따옴표를 사용하여 메시지 형식 지정
  2. MessageFormat을 활용하는 Unicode 문자를 사용하여 메시지 형식 지정
  3. MessageFormat을 활용하는 이스케이프 시퀀스를 사용하여 메시지 형식 지정
  4. MessageFormat을 활용하여 문자를 교체하여 메시지 형식 지정
Java 메시지 형식

이 튜토리얼에서는 Java API에서 제공하는 Java MessageFormat 클래스를 사용하여 메시지 형식을 지정하는 방법을 배웁니다. 형식화는 문자와 문자열을 메시지에 동적으로 삽입하는 프로세스이며 MessageFormat은 이 기능을 제공합니다.

MessageFormat은 개체 인수를 사용하여 개체 인수가 삽입된 위치를 보여주는 패턴을 사용하여 형식이 지정된 문자열을 형성합니다.

객체 인수는 MessageFormat 객체 매개변수에 전달된 위치를 기반으로 패턴에 삽입됩니다. 메시지 형식을 지정하는 방법을 배우기 위해 MessageFormat의 정적 format() 메서드를 사용합니다.

format() 메소드에 전달된 첫 번째 매개변수는 문자열에 동적으로 삽입하려는 문자열 지정자를 기반으로 하는 객체 인수가 뒤따르는 패턴입니다. 패턴에 요소를 삽입할 때 MessageFormat에 의해 다르게 해석되는 특정 문자를 사용할 수 있으며, 이는 예상과 다른 결과를 초래할 수 있습니다.

예를 들어 MessageFormat을 사용하여 형식이 지정된 메시지 내에서 you're와 같은 문자열에 작은따옴표를 사용하면 youre 문자열이 생성됩니다. 작은 따옴표는 형식이 지정되지 않은 섹션을 나타내는 데 사용되며 다음 예에서 메시지의 나머지 패턴은 형식이 지정되지 않았습니다.

import java.text.MessageFormat;

public class FormatString {
  public static void main(String[] args) {
    String name = "John";
    long age = 30;
    String message =
        MessageFormat.format("Hello {0}, you're turning {1} years old today", name, age);
    System.out.println(message);
  }
}

출력:

Hello John, youre turning {1} years old today

다음 섹션에서는 메시지에 작은 따옴표를 삽입하여 패턴의 형식이 성공적으로 지정되도록 하는 데 사용할 수 있는 네 가지 방법을 다룹니다.

MessageFormat을 활용하여 큰따옴표를 사용하여 메시지 형식 지정

MessageFormat을 사용하여 형식이 지정된 메시지에 작은 따옴표를 추가하려면 아래와 같이 문자열에 작은 따옴표 ' 대신 두 개의 작은 따옴표 ''를 사용해야 합니다.

import java.text.MessageFormat;

public class FormatString {
  public static void main(String[] args) {
    String name = "John";
    long age = 30;
    String message =
        MessageFormat.format("Hello {0}, you''re turning {1} years old today", name, age);
    System.out.println(message);
  }
}

출력:

Hello John, you're turning 30 years old today

큰따옴표를 추가한 후 작은따옴표가 삽입되고 나머지 패턴은 올바른 값으로 서식이 지정됩니다.

MessageFormat을 활용하는 Unicode 문자를 사용하여 메시지 형식 지정

모든 문자에는 유니코드 표현이 있습니다. Java는 유니코드 문자를 읽을 수 있으므로 작은 따옴표의 유니코드 표현을 사용하여 문자열에 작은 따옴표를 삽입할 수 있습니다.

import java.text.MessageFormat;

public class FormatString {
  public static void main(String[] args) {
    String name = "John";
    long age = 30;
    String message =
        MessageFormat.format("Hello {0}, you\u2019re turning {1} years old today", name, age);
    System.out.println(message);
  }
}

출력:

Hello John, you're turning 30 years old today

유니코드 문자 \u2019는 문자열에 작은따옴표를 추가하고 메시지의 나머지 패턴은 올바른 값으로 형식이 지정됩니다.

MessageFormat을 활용하는 이스케이프 시퀀스를 사용하여 메시지 형식 지정

이 방법은 큰따옴표를 사용하는 방법과 유사하지만 일련의 문자를 삽입하기 위해 앞에 백슬래시가 있는 문자인 이스케이프 시퀀스 \를 사용합니다. 아래와 같이 패턴에 두 개의 따옴표 이스케이프 시퀀스를 삽입하여 작은 따옴표를 삽입할 수 있습니다.

import java.text.MessageFormat;

public class FormatString {
  public static void main(String[] args) {
    String name = "John";
    long age = 30;
    String message =
        MessageFormat.format("Hello {0}, you\'\'re turning {1} years old today", name, age);
    System.out.println(message);
  }
}

출력:

Hello John, you're turning 30 years old today

MessageFormat을 활용하여 문자를 교체하여 메시지 형식 지정

문자열로 작업하기 때문에 문자열을 동일하게 유지하고 replaceAll() 메서드를 사용하여 작은 따옴표를 큰 따옴표로 교체하여 마침내 문자열에 작은 따옴표를 추가할 수 있습니다.

import java.text.MessageFormat;

public class FormatString {
  public static void main(String[] args) {
    String name = "John";
    long age = 30;
    String message = MessageFormat.format(
        "Hello {0}, you're turning {1} years old today".replaceAll("'", "''"), name, age);
    System.out.println(message);
  }
}

출력:

Hello John, you're turning 30 years old today
David Mbochi Njonge avatar David Mbochi Njonge avatar

David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.

LinkedIn GitHub