코틀린 (Kotlin) 문자열과 정규식 정리
코틀린 문자열과 정규식
코틀린에서는 자바에는 없는 여러 구분자를 처리할 수 있는 확장함수를 제공합니다.
"12.345-6.A".split("\\.|-".toRegex()) //정규식으로 만들어 사용
"12.345-6.A".split(".", "-") //확장 함수로 사용
//결과: [12, 345, 6, A]
"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")
}
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")
}
}
// """ 으로 묶은 정규표현식은 이스케이프하지 않음.
//\. -> 그냥 . 임
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\""" //이스케이프 없이 \ 를 바로 사용 가능
.b/\
.c/\ """
tripleQuote.trimMargin(".")) // . 과 직전의 공백을 제거해서 이쁘게 출력 가능
val path = """C:\Users\""" //이스케이프 없이 \ 를 바로 사용 가능
댓글
댓글 쓰기