코틀린 (Kotlin) 문자열과 정규식 정리

코틀린 문자열과 정규식

코틀린에서는 자바에는 없는 여러 구분자를 처리할 수 있는 확장함수를 제공합니다.

"12.345-6.A".split("\\.|-".toRegex()) //정규식으로 만들어 사용

"12.345-6.A".split(".", "-") //확장 함수로 사용

//결과: [12, 345, 6, A]

String 확장 함수

"/document/kotlin/kotlin.txt" 에서 경로와 파일이름, 확장자를 파싱합니다.

코틀린에서 확장 함수로 제공해주는 함수를 사용하면 정규식 사용없이 손쉽게 문자열을 파싱할 수 있습니다.

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")
}

3중 따옴표 문자열

3중 따옴표 문자열에서는 역슬래시(\) 를 포함하여 따로 이스케이프할 필요가 없습니다.
일반적으로 마침표(.) 기호를 이스케이프하려면 \\. 이라고 사용하지만 3중 따옴표 문자열에서는 \. 이라고 사용합니다.

fun parsePathRegx(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중 따옴표 문자열

3중 따옴표 문자열을 사용하면 개행(\n) 없이 줄 바꿈할 수 있습니다.

 val tripleQuote = """a/\
                            .b/\
                            .c/\ """

tripleQuote.trimMargin(".")) // . 과 직전의 공백을 제거해서 이쁘게 출력 가능

val path = """C:\Users\""" //이스케이프 없이 \ 를 바로 사용 가능


댓글

이 블로그의 인기 게시물

코틀린 (Kotlin) filter, map, all, any, count, find, groupBy, flatMap 함수 정리

코틀린 (Kotlin) 인터페이스 정리

RecyclerView 에서 notifyItemChanged()의 payload 이해하기