[Kotlin] String 원시 문자열(Raw String Literal)

2022. 9. 28. 22:14·Android/Kotlin(Java)
반응형

원시 문자열(Raw String Literal)이란?

Kotlin의 원시 문자열(Raw String)은 문자열을 표현하는 리터럴 중 한 유형으로 문자열 내에 이스케이프 문자를 사용하지 않고 특수 문자나 여러 줄의 텍스트를 문자 그대로 표현하는 문자열 리터럴입니다. 

원시 문자열의 특징

원시 문자열은 아래와 같은 특징을 가집니다.

 

원시 문자열은 삼중따옴표(""")로 묶어서 정의 -> 따옴표가 아닌 삼중따옴표로 묶어서 정의합니다.

이스케이프 문자를 사용하지 않음 -> Raw String Literal 내에서는 \n, \t, \"와 같은 이스케이프 문자를 사용하지 않아도 됩니다. 따라서 특수 문자를 그대로 포함할 수 있어 가독성이 높아집니다.

여러 줄의 텍스트 처리 -> 여러 줄로 구성된 텍스트를 표현할 때 유용하며, 줄 바꿈 문자(\n)를 직접 삽입할 필요가 없습니다.

모든 여백을 그대로 유지 -> 들여쓰기와 같은 여백을 그대로 유지할 수 있어 코드 블록이나 구조화된 텍스트를 표현할 때 유용합니다.

이스케이프를 처리하지 않음 -> 원시 문자열은 이스케이프 문자를 그대로 출력합니다. 예를 들어, \n은 줄 바꿈 문자로 해석되지 않고 그대로 출력됩니다.

사용 예제

다중 라인 문자열

원시 문자열을 사용하여 이스케이프를 사용하지 않고 여러 줄에 걸쳐 텍스트를 작성할 수 있습니다. 들여쓰기와 줄 바꿈은 그대로 유지됩니다.

val multiLineString = """
    This is a
    multiline string.
    It allows you to write text
    across multiple lines.
"""

출력 결과

 

 

이스케이프 문자를 처리하지 않음

원시 문자열은 이스케이프 문자를 그대로 출력하며, 이스케이프 문자가 문자열 내에서 특수한 의미를 갖지 않습니다.

val escapeCharacters = """
    Escape characters are preserved: \n\t\"\\
"""

 

출력 결과

 

 

기본적으로 원시 문자열 리터럴은 첫 줄부터 문자열의 시작까지의 여백을 포함합니다. 이러한 여백을 제거하려면 trimMargin() 또는 trimIndent()와 함께 사용할 수 있습니다.

 

trimIndent

trimIndent() 함수를 사용하여 문자열 앞부분의 들여쓰기를 제거할 수 있습니다. 들여쓰기 된 부분은 가장 작은 들여쓰기에 맞게 조정됩니다.

 

val indentedString = """
    This is an indented string.
    Leading whitespace will be removed.
""".trimIndent()

출력 결과

trimMargin

trimMargin() 함수를 사용하여 구분자를 통해서 문자열 앞부분의 들여쓰기와 구분자를 제거할 수 있습니다. 기본 구분자는 |입니다.

val indentedString = """
    |This is an indented string.
    |Leading whitespace and the separator will be removed.
""".trimMargin()

출력 결과

 

 

 

 

반응형
'Android/Kotlin(Java)' 카테고리의 다른 글
  • [Kotlin] Annotation Processor로 코드 생성하기(ft. KotlinPoet)
  • [Kotlin] 자주 사용하는 코틀린 함수 정리(String, ArrayList, Queue, Stack)
  • [Kotlin/Java] System.arraycopy로 배열 복사하기
  • [Kotlin] Comparable Interface 상속으로 클래스 비교하기
seunghwaan
seunghwaan
공부한 내용을 정리하는 개발 기록 블로그
    반응형
  • seunghwaan
    SH's Devlog
    seunghwaan
  • 전체
    오늘
    어제
    • 분류 전체보기 (148)
      • Android (62)
        • Basic (17)
        • Kotlin(Java) (14)
        • UI & Animation (1)
        • Compose (2)
        • Coroutines (1)
        • Dependency Injection (6)
        • RxJava (8)
        • BLE (3)
        • TDD (2)
        • JetPack (1)
        • NextStep (4)
        • Error Log (3)
      • Flutter (14)
        • Basic (5)
        • Dart (1)
        • State Management (2)
        • Widgets (4)
        • Error and Tips (2)
      • iOS (8)
        • Basic (0)
        • Swift (8)
      • Web Frontend (4)
        • JavaScript(TS) (4)
        • React (0)
      • CS(Computer Science) (18)
        • Network (4)
        • Database (10)
        • Design Pattern (1)
        • Computer Architecture (3)
        • Operating System (0)
      • Cloud (6)
        • AWS (6)
      • DevOps (25)
        • GIT (4)
        • CI CD (8)
        • Linux (4)
        • Docker (9)
        • Error Log (0)
      • 코딩테스트 (10)
        • DB (6)
        • 알고리즘 (4)
      • Backend (1)
        • Spring (1)
      • Mac Tip (0)
      • Language (0)
        • English (0)
        • Japanese (0)
      • Temporary (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    FLUTTER
    di
    RxJava
    MySQL
    Dependency Injection
    AWS
    Dagger
    cs
    Network
    error
    docker
    Jenkins
    IOS
    시작하세요! 도커
    BLE
    상태 관리
    Algorithm
    CICD
    database
    cognito
    Swift
    Kotlin
    Computer Science
    Android
    Linux
    네트워크
    CI
    gradle
    JavaScript
    컴퓨터공학
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
seunghwaan
[Kotlin] String 원시 문자열(Raw String Literal)
상단으로

티스토리툴바