원시 문자열(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()
출력 결과