mygomii

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

Kotlin

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

mygomii 2025. 4. 1. 15:54
반응형
  • 코틀린 문자열은 자바 문자열과 똑같음
  • 코틀린 코드가 만들어낸 문자열을 아무 자바 메서드에 넘겨도 되며, 자바 코드에서 받은 문자열을 아무 코틀린 표준 라이브러리 함수에 전달해도 전혀 문제 없음

3.5.1 문자열 나누기

  • String  split 메서드를 알고 있을것이다
  • “12.345-6.A”.split(.) 라는 호출의 결과가 [12, 345-6, A] 배열이라고 생각하는 실수를 저지를는 개발자가 많음 ⇒ 하지만 split 은 빈 배열을 반환함
  • 이유는 split 이 정규식(regular expression)을 구분 문자열로 받아 . 그정슈식에 따라 문자열을 나누기 때문 → 이 경우 마침표는 모든 문자를 나타내는 정규식으로 해석
  • 정규식을 파라미터로 받는 함수는 String이 아닌 Regex 타입의 값을 받음
fun main() {
	println("12.345-6.A".split("\\\\.|-".toRegex())) // <- 정규식을 명시적으로 받음
	// [12, 345, 6, A]
}
  • 하지만 이렇게 간단한 경우 정규식을 사용할 필요 x
  • split 확장 함수 오버로딩한 버전 중에는 구분 문자열을 하나 이상 인자로 받는 함수가 있음
fun main() {
	println("12.345-6.A".split('.', '-')) // 이렇게 사용해도 똑같은 결과를 얻을 수 있음 
}

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

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

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

  • 3중 따옴표 문자열은 문자열 이스케이프를 피하기 위해서만 사용하지는 않음
fun main() {
    val multilineString = """
        첫 번째 줄입니다.
        두 번째 줄입니다.
        세 번째 줄입니다.
    """.trimIndent()

    println(multilineString)
}

//첫 번째 줄입니다.
//두 번째 줄입니다.
//세 번째 줄입니다.
  • 3중 따옴표 문자열 안에 문자열 템플릿을 사용할 수 있음 그러나 3중 따옴표 문자열 안에서는 이스케이프를 할 수 없기 때문에 문자열 내용에서 $나 유니코드 이스케이프를 사용하고 싶을 때는 내포 식을 사용해야함
반응형