const val question = "life, the universe, and everything"
const val answer = 42
val tripleQuotedString = """
#question = "$question"
#answer = $answer""".trimIndent()
fun main() {
println(tripleQuotedString)
}
Learn about the different string literals and string templates in Kotlin.
You can use the handy library functions trimIndent
and trimMargin
to format multiline triple-quoted strings in accordance with the surrounding code.
Replace the trimIndent
call with the trimMargin
call taking #
as the prefix value, so that the resulting string doesn't contain the prefix character.
const val question = "life, the universe, and everything"
const val answer = 42
val tripleQuotedString = """
#question = "$question"
#answer = $answer""".trimMargin("#")
fun main() {
println(tripleQuotedString)
}
이번 문제는 문자열 리터럴을 trimMargin()
함수를 사용하여 공백을 제거하는 문제였습니다.
trimMargin()
함수는 marginPrefix라는 매개변수를 가지고 있는데, 문자열에서 marginPrefix 앞에 있는 모든 공백을 제거해주는 역할을 하는 함수입니다. marginPrefix 매개변수의 기본값은 "|"
이고 만약 다른 marginPrefix를 사용하고 싶다면 함수의 인자로 넘겨주면 됩니다.
위 문제에서는 marginPrefix로 "#"
이라는 문자를 사용하였기 때문에 trimMargin()
함수의 인자로 "#"
문자를 넘겨주면 됩니다.
Kotlin에는 두 가지 타입의 문자열 리터럴이 있습니다. 이스케이프 문자를 가질 수 있는 이스케이프 문자열과 개행문자와 임의의 문자를 가질 수 있는 raw 문자열입니다.
이스케이프 문자열에서 이스케이핑은 백슬래쉬를 사용한 관습적인 방법으로 사용 가능합니다.
val s = "Hello, world\n"
raw 문자열은 3개의 큰 따옴표("""
)로 구분되며, 이스케이핑을 하지 않고 개행 문자나 다른 문자를 포함할 수 있습니다.
val text = """
for (c in "foo")
print(c)
"""
문자열 앞에 나오는 공백을 trimMargin()
함수로 제거할 수 있습니다. 기본적으로 "|"
문자가 margin Prefix로 사용되지만 함수의 매개변수로 다른 문자를 넘겨줘서 바꿀 수 있습니다.
val text = """
|Tell me and I forget.
|Teach me and I remember.
|Involve me and I learn.
|(Benjamin Franklin)
""".trimMargin()
val text2 = """
#XYZ
#foo
#bar
""".trimMargin("#")
Kotlin에는 이스케이프 문자열과 raw 문자열, 두 가지 타입의 문자열 리터럴이 있습니다. raw 문자열의 경우 이스케이핑을 하지 않고 개행 문자나 다른 문자를 포함할 수 있으며, trimMargin()
, trimIndent()
와 같은 함수를 사용하여 앞에 존재하는 공백을 제거할 수도 있습니다.
Kotlin에 대한 추가적인 내용은 추후 Kotlin Reference를 정리하면서 좀 더 상세히 알아보도록 하겠습니다.