코틀린의 RAW 문자열과 trimMargin()에 대해 알아보자!

최지환·2022년 3월 16일
0

코틀린

목록 보기
1/4
post-thumbnail

RAW 문자열과 trimMargin()

코틀린에서는 “”” 키워드를 이용해 문자열을 출력할 수 있다. 기존의 이스케이프 문자열을 쓸 수 있지만, 이스케이프를 많이 쓸경우 가독성이 떨어지기 떄문에 “”” 키워드 또한 지원한다.

우선 예제 코드를 봐보자

fun main() {
    fun createMemoFor(name: String): String {
        if (name == "지환") {
            val memo = """$name 에게, 안녕하세요. 문자열 예시를 들어야 하는데
                마땅히 쓸 내용이 없네요
                오늘 날씨가 정말 좋군요.
                좋은 하루 되세요
            """
            return memo
        }
        return ""
    }
    println(createMemoFor("지환"))
}

출력결과

다음 결과를 보면 “””를 사용하면 우리가 타이핑한 값이 그대로 출력된다. 이럴 경우 코드의 가독성을 위해 적요한 인덴트 또한 같이 출력됨을 볼 수 있다.

이런 문제를 해결하기 위해 trimMargin() 을 사용해보자

fun main() {
    fun createMemoFor(name: String): String {
        if (name == "지환") {
            val memo = """$name 에게, 안녕하세요. 문자열 예시를 들어야 하는데
                |마땅히 쓸 내용이 없네요
                |오늘 날씨가 정말 좋군요.
                |좋은 하루 되세요
            """
            return memo.trimMargin()
        }
        return ""
    }
    println(createMemoFor("지환"))
}

출력 결과

출력 결과를 확인하면 | 를 기준으로 공백이 사라짐을 볼 수 있다.

trimMargin()을 꾹 눌러 자세히 확인해 보면 다음과 같이 doc 문서를 확인 할 수 있다.

파라미터로 특정 문자를 받아, 그문자를 기준으로 margin(여백), 즉 인덴트를 지워준다. 기본 문자열은 ‘ | ‘ 임을 확인 할 수 있다.

그렇다면 파라미터로 특정 문자 ‘*’을 넘겨줘 보자

fun main() {
    fun createMemoFor(name: String): String {
        if (name == "지환") {
            val memo = """$name 에게, 안녕하세요. 문자열 예시를 들어야 하는데
                *마땅히 쓸 내용이 없네요
                *오늘 날씨가 정말 좋군요.
                *좋은 하루 되세요
            """
            return memo.trimMargin("*")
        }
        return ""
    }
    println(createMemoFor("지환"))
}

출력 결과

0개의 댓글

관련 채용 정보