[Kotlin] String 문자열을 구분자로 분할하기 (Split)

Split (기본 사용법)

구분자를 기준으로 문자열을 분할하여 List 반환한다.

fun main() {
    println("한놈,두식이0석삼^너구리".split(",", "0", "^"))
    // [한놈, 두식이, 석삼, 너구리]
}

 

 

ignoreCase = true 인자를 넣으면 구분자의 대소문자가 무시된다

fun main() {
    println("한놈a두식이A석삼a너구리".split("a"))
    // [한놈, 두식이A석삼, 너구리]
    println("한놈a두식이A석삼a너구리".split("a", ignoreCase = true))
    // [한놈, 두식이, 석삼, 너구리]
}

 

 

limit = n을 인자를 넣으면 최대 n개의 문자열로 분할된

fun main() {
    println("한놈a두식이a석삼a너구리".split("a", limit = 2))
        // [한놈, 두식이a석삼a너구리]
}

 

Split (정규식 사용)

 

정규식을 사용해 매칭되는 부분을 끊어서 문자열을 자를 수 있다.

정규식에 특수 문자를 사용할 때는 이스케이프 처리에 주의해야 한다.

fun main() {
    val regex = ",|0|#".toRegex() //, 0 #을 검출하는 정규식
    println("한놈,두식이0석삼#너구리".split(regex))
    // [한놈, 두식이, 석삼, 너구리]

    val regexWrongCase = "|".toRegex() // 정규식을 사용한 잘못된 예제
    println("일|이|삼|사".split(regexWrongCase))
    // [, 일, |, 이, |, 삼, |, 사, ]

    val regexEscape = Regex.escape("|").toRegex() // escape 처리하여 해결
    println("일|이|삼|사".split(regexEscape))
    // [일, 이, 삼, 사]
}

 


지금까지 코틀린 내장 라이브러리 Split에 대해 알아보았다.

 

구분자가 한개이거나 구분자와 개수가 명확히 주어질때 적용이 용이하지만

개수와 종류가 계속 변한다면 적용이 곤란할 것이다.

 

이것은 정규식을 응용하면 해결이 가능하다. 자세한 해결 방법은 다음 포스트