코틀린에서는 “”” 키워드를 이용해 문자열을 출력할 수 있다. 기존의 이스케이프 문자열을 쓸 수 있지만, 이스케이프를 많이 쓸경우 가독성이 떨어지기 떄문에 “”” 키워드 또한 지원한다.
우선 예제 코드를 봐보자
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("지환"))
}
출력 결과