본문 바로가기
Kotlin

[Kotlin in Action] 3.5 문자열과 정규식 다루기

by Nhahan 2025. 3. 14.

코틀린 문자열은 자바 문자열과 100% 같다.

 

3.5.1 문자열 나누기

코틀린에서는 split 함수에 String, regex 타입을 확실하게 각각 받게끔 설계되어있다. 따라서 전달하는 값의 타입에 따라 정규식(regex)이나 일반 텍스트(String) 중 어느 것으로 문자열을 분리하는지 쉽게 알 수 있다.

 

3.5.2 정규식과 3중 따옴표로 묶은 문자열

// String 확장 함수를 사용해 경로 파싱하기
fun parsePath(path: String) {
    val directory = path.substringBeforeLast("/")
    val fullName = path.substringAfterLast("/")
    val fileName = fullName.substringBeforeLast(".")
    val extension = fullName.substringAfterLast(".")
    println("Dir: $directory, name: $fileName, ext: $extension")
}
>>> parsepath("/Users/yole/kotlin-book/chapter.adoc")
Dir: /Users/yole/kotlin-book, name: chapter, ext: adoc

코틀린에서는 정규식을 사용하지 않고도 문자열을 쉽게 파싱할 수 있다.

 

정규식이 필요하다면 코틀린 라이브러리를 사용하면 더 편하다.

// 경로 파싱에 정규식 사용하기
fun parsePath(path: String) {
    val regex = """(.+)/(.+)\.(.+)""".toRegex()
    val matchResult = regex.matchEntire(path)
    if (matchResult != null) {
        val (directory, filename, extension) = matchResult.destructured
        println("Dir: $directory, name: $filename, ext: $extension")
    }
}

 

3.5.3 여러 줄 3중 따옴표 문자열

val kotlinLogo = """| //
                    .| //
                    .|/ \"""

코틀린의 3중 따옴표를 쓰면 줄 바꿈이 들어있는 프로그램 텍스트를 쉽게 문자열로 만들 수 있다.

단, 이스케이프 문자를 사용할 수 없으므로, $를 표기하기 위해서는 ${'$'} 형태로 사용해야한다.

댓글