본문 바로가기
Baeldung번역&공부/Java-string

Multi-line을 정의하는 여러 방법(Java Multi-line String)

by ms727 2025. 1. 30.

원본 글: https://www.baeldung.com/java-multiline-string

 

multiline string을 어떻게 선언하는지 확인해봅니다.

 

Java15에서는 Text Blocks라는 새로운 기능이 나왔는데 살펴보고, 다른 기존 방법도 살펴볼 것입니다.

 

1. Text Blocks

 

"""(큰 따옴표 3개)를 통하여 문자열을 생성할 수 있습니다.

 

    @Test
    public void text_block_test() {
        String sentence = """
                happy new year
                Stay healthy always.
                """;
        System.out.println(sentence);
    }

 

들여쓰기나 공백 등을 관리할 필요 없는 여러 줄을 선언하는 가장 편리한 방법 중 하나입니다.

다만, 위 방법은 Java15이상에서 가능합니다.

 

2. Getting the Line Separator

이 글에서는 Line Separator라는 속성을 추가하여 새로운 문자열을 만들고 있습니다.

 

String newLine = System.getProperty("line.separator");

 

이런식으로 구성하여 여러 테스트를 진행합니다.

 

그러기 위해서는 application.properties에 해당 내용이 있어야합니다.

//application.properties
line.separator=\n

 

앞으로 여러 테스트에서 쓰일 수 있으므로 사전 정의를 진행합니다.

 

@BeforeEach
public void setUp() {
    newLine = System.getProperty("line.separator");
}

 

@Test
public void text_concat_test() {
    String sentence = "happy new year"
            .concat(newLine)
            .concat("Stay healthy always.")
            .concat(newLine)
            .concat("2025-01-30")
            .concat(newLine);
    System.out.println(sentence);
}

 

결과를 보면 의도한대로 잘 진행된 것을 볼 수 있습니다.

다른 글에서도 보듯이 "+" 연산자를 통해서 똑같이 만들 수 있습니다.

 

@Test
public void text_operator_test() {
    String sentence = "happy new year"
            + newLine
            + "Stay healthy always."
            + newLine
            + "2025-01-30"
            + newLine;
    System.out.println(sentence);
}

3. String Join

 

Java8에서는 String.join()메서드를 통해서 문자열을 구성할 수 있습니다.

 

문자열에 관련해서는

 

https://ms727.tistory.com/5

 

Concatenating Strings in Java(문자열을 잇는방법)

원본글: https://www.baeldung.com/java-strings-concatenation Java에서 String객체를 잇는 방법에는 여러가지가 있는데, 그 중 몇 가지를 확인하고 나쁜(?) 코드도 확인해 보겠습니다. 1. StringBuilder StringBuilder클

ms727.tistory.com

이 글을 선행적으로 읽어보는게 이해하기 편합니다.

 

@Test
public void join_string_test() {
    String sentence = String.join(newLine
            , "happy new year"
            , "Stay healthy always."
            , "2025-01-30");
    System.out.println(sentence);
}

 

이런 식으로 문자열 사이사이 구분자를 추가할 수 있습니다.

4. String Builder

StringBuilder를 통해서 문자열을 구성할 수 있습니다.

 

@Test
public void builder_multiline_test() {
    String sentence = new StringBuilder()
            .append("happy new year")
            .append(newLine)
            .append("Stay healthy always.")
            .append(newLine)
            .append("2025-01-30")
            .toString();
    System.out.println(sentence);
}

 

5. String Writer

이 메서드는 'newLine'이 필요없습니다. 알아서 줄바꿈을 해주기 때문입니다.

 

@Test
public void writer_test() {
    StringWriter stringWriter = new StringWriter();
    PrintWriter printWriter =  new PrintWriter(stringWriter);
    printWriter.println("happy new year");
    printWriter.println("Stay healthy always.");
    printWriter.println("2025-01-30");
    System.out.println(stringWriter.toString());
}

 

다만 마지막 문자열에도 줄바꿈은 추가되기때문에 이를 유의해서 사용할 필요가 있어보입니다.

 

6. Guava Joiner

Google의 Guava라는 외부라이브러리를 통해서 문자열을 만들 수 있습니다.

간단한 예제에서는 큰 필요가 없어보일 수 있지만 프로젝트가 커지면 해당 라이브러리의 다양한 기능들을 적용해보는 것도 검토해보면 좋을 것 같습니다.

참고 :https://www.baeldung.com/guava-joiner-and-splitter-tutorial

 

public String guavaJoiner() {
    return Joiner.on(newLine).join(ImmutableList.of("Get busy living",
        "or",
        "get busy dying.",
        "--Stephen King"));
}

 

7. Loading From a File

Java에서는 파일을 읽을때 공백을 그대로 읽습니다. 파일을 읽고 String 객체로 반환하는 방법 중 하나를 확인해봅니다.

 

@Test
public void read_file_test() {
    try {
        System.out.println(new String(Files.readAllBytes(Paths.get("src/test/resources/multi-line.txt"))));
    } catch (IOException e) {
        System.out.println("error");
    }
}

 

당연히 해당 경로에는 파일이 존재해야합니다.

 

8. 결론

 

Java에서 Multi-line을 구성하는 방법을 살펴봤습니다.

개인적으로 Java15이상에서 제공하는 Text Blocks방법이 제일 간편해서 자주 사용할 것 같습니다.