Post

Java Multiline String

1. 여러 줄 문자열

Java에서 여러 줄 문자열을 선언하는 방법이다.

Java 15에서 텍스트 블록이라는 새로운 기본 기능을 사용할 수 있다.

2. 텍스트 블록

문자열을 """(큰따옴표 3개)로 선언하여 텍스트 블록을 사용할 수 있다.

1
2
3
4
5
6
7
public String textBlocks() {
    return """
        Get busy living
        or
        get busy dying.
        --Stephen King""";
}

그것은, 단연코, 멀티 라인 문자열을 선언하는 가장 편리한 방법이다. 줄 구분 기호나 들여쓰기 공백을 다룰 필요가 없다.

이 기능은 Java 15에서 사용할 수 있지만 미리보기 기능을 활성화 하면 Java 13 및 14에서도 사용할 수 있다.

3. 줄 구분 기호 얻기

각 운영 체제는 새 라인을 정의하고 인식하는 고유한 방법을 가질 수 있다. Java에서는 운영 체제 줄 구분 기호를 얻는 것이 매우 쉽다.

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

4. 문자열 연결

문자열 연결은 여러 줄 문자열을 만드는데 사용할 수 있는 쉬운 기본 방법이다.

1
2
3
4
5
6
7
8
9
public String stringConcatenation() {
    return "Get busy living"
            .concat(newLine)
            .concat("or")
            .concat(newLine)
            .concat("get busy dying.")
            .concat(newLine)
            .concat("--Stephen King");
}

+ 연산자를 사용하는 것은 동일한 결과를 얻는 또 다른 방법이다. Java 컴파일러는 concat() 및 + 연산자를 같은 방식으로 번역한다.

1
2
3
4
5
6
7
8
9
public String stringConcatenation() {
    return "Get busy living"
            + newLine
            + "or"
            + newLine
            + "get busy dying."
            + newLine
            + "--Stephen King";
}

5. String Join

Java 8은 일부 문자열과 함께 구분 기호를 인수로 사용하는 String#join을 도입했다. 모든 입력 문자열이 구분 기호와 함께 결합된 최종 문자열을 반환한다.

1
2
3
4
5
6
7
public String stringJoin() {
    return String.join(newLine,
                       "Get busy living",
                       "or",
                       "get busy dying.",
                       "--Stephen King");
}

6. String Builder

StringBuilder는 문자열을 빌드하기 위한 도우미 클래스이다. StringBuilder는 StringBuffer를 대체하기 위해 자바 1.5에 도입되었다. 루프에 거대한 문자열을 구축하는데 좋은 선택이다.

1
2
3
4
5
6
7
8
9
10
11
public String stringBuilder() {
    return new StringBuilder()
            .append("Get busy living")
            .append(newLine)
            .append("or")
            .append(newLine)
            .append("get busy dying.")
            .append(newLine)
            .append("--Stephen King")
            .toString();
}

7. String Writer

StringWriter는 여러 줄 문자열을 만드는데 사용할 수 있는 또 다른 방법이다. PrintWriter를 사용하기 때문에 여기서는 newLine이 필요하지 않다. println 함수는 자동으로 새 줄을 추가한다.

1
2
3
4
5
6
7
8
9
public String stringWriter() {
    StringWriter stringWriter = new StringWriter();
    PrintWriter printWriter = new PrintWriter(stringWriter);
    printWriter.println("Get busy living");
    printWriter.println("or");
    printWriter.println("get busy dying.");
    printWriter.println("--Stephen King");
    return stringWriter.toString();
}

8. Guava Joiner

이와 같은 간단한 작업을 위해 외부 라이브러리를 사용하는 것은 의미가 없지만 프로젝트에서 이미 다른 용도로 라이브러리를 사용하고 있다면 활용할 수 있다. 예를 들어 Google의 Guava 라이브러리는 매우 유명하다. Guava에는 여러 줄 문자열을 작성할 수 있는 Joiner 클래스가 있다.

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

9. 파일에서 불러오기

Java는 파일을 있는 그대로 읽는다. 즉, 텍스트 파일에 여러 줄의 문자열이 있는 경우 파일을 읽을 때 동일한 문자열을 갖게 된다. Java에서 파일 을 읽는 방법에는 여러 가지가 있다.

실제로 코드에서 긴 문자열을 분리하는 것이 좋다.

1
2
3
public String loadFromFile() throws IOException {
    return new String(Files.readAllBytes(Paths.get("src/main/resources/stephenking.txt")));
}

10 .IDE 기능 사용

많은 최신 IDE는 여러 줄 복사/붙여넣기를 지원한다. Eclipse 및 IntelliJ IDEA가 이러한 IDE의 예이다. 우리는 단순히 여러 줄 문자열을 복사하여 이러한 IDE에서 두 개의 큰따옴표 안에 붙여넣을 수 있다.

분명히 이 방법은 런타임에 문자열을 생성할 때는 작동하지 않지만 여러 줄 문자열을 얻는 빠르고 쉬운 방법이다.

[출처 및 참고]

This post is licensed under CC BY 4.0 by the author.