반응형
1. 문자열 나누기
코틀린에서는 자바의 split 대신에 여러 가지 다른 조합의 파라미터를 받는 split 확장 함수를 제공함으로써 혼동을 이야기하는 메소드를 감춘다. 정규식을 파라미터로 받는 함수는 String이 아닌 Regex 타입의 값을 받는다.
>>> println("12.345-6.A".split("\\.|-".toRegex())) // 정규식을 명시적으로 만든다.
[12, 345, 6, A]
코틀린에서는 toRegex 확장 함수를 사용해 문자열을 정규식으로 변환할 수 있다.
>>> println("12.345-6.A".split(".", "-")) // 여러 구분 문자열을 지정한다.
[12, 345, 6, A] // 문자열 대신 문자를 인자로 넘겨도 마찬가지 결괄르 볼 수 있다.
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")
}
fun main() {
parsePath("/Users/yole/kotlin-book/chapter.adoc")
}
코틀린에서는 정규식을 사용하지 않고도 문자열을 쉽게 파싱할 수 있다.
두 번째 구현은 정규식을 사용한다.
fun parsePath2(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")
}
}
fun main() {
parsePath2("/Users/yole/kotlin-book/chapter.adoc")
}
3중 따옴표 문자열을 사용해 정규식을 썼다. 3중 따옴표 문자열에서는 역슬래시()를 포함한 어떤 문자도 이스케이프할 필요가 없다.
반응형
'프로그래밍 노트 > Kotlin' 카테고리의 다른 글
[Kotlin] 코틀린 인터페이스와 open, final, abstract 변경자 (0) | 2020.11.29 |
---|---|
[Kotlin] 코틀린 로컬함수와 확장 (0) | 2020.11.24 |
[Kotlin] 코틀린 컬렉션 처리: 가변 길이 인자, 중위 함수 호출, 라이브러리 지원 (0) | 2020.11.19 |
[Kotlin] 코틀린(Kotlin) 메소드를 다른 클래스에 추가(확장 함수와 확장 프로퍼티) (0) | 2020.11.19 |
[Kotlin] 코틀린(Kotlin) 함수만들기 (0) | 2020.11.14 |