Kotlin Koans - Introduction / Triple-quoted strings

이준영·2020년 12월 8일
1

Kotlin Koans

목록 보기
5/9
post-thumbnail

문제

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() 함수의 인자로 "#" 문자를 넘겨주면 됩니다.

학습 내용

Strings

String literals

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를 정리하면서 좀 더 상세히 알아보도록 하겠습니다.

참고 자료

Kotlin Reference - Basics / Basic Types

profile
growing up 🐥

0개의 댓글