반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- jquery
- kotlininaction
- 정보처리기사
- 코틀린
- php변수
- Eclipse
- 서버
- 변수
- 의존주입
- 플러터
- 이클립스
- script
- Flutter
- php개발
- Kotlin
- SwiftUI
- java
- 조건문
- npm
- express
- 그림으로 배우는 서버구조
- kotlin2.0
- 스터디
- ios
- 설치
- android
- php
- 스나이퍼팩토리
- node
- node.js
Archives
- Today
- Total
mygomii
[Kotlin] 3.5 문자열과 정규식 다루기 본문
반응형
- 코틀린 문자열은 자바 문자열과 똑같음
- 코틀린 코드가 만들어낸 문자열을 아무 자바 메서드에 넘겨도 되며, 자바 코드에서 받은 문자열을 아무 코틀린 표준 라이브러리 함수에 전달해도 전혀 문제 없음
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중 따옴표 문자열 안에서는 이스케이프를 할 수 없기 때문에 문자열 내용에서 $나 유니코드 이스케이프를 사용하고 싶을 때는 내포 식을 사용해야함
반응형
'Kotlin' 카테고리의 다른 글
[Kotlin] 4.2 뻔하지 않은 생성자나 프로퍼티를 갖는 클래스 선언 (0) | 2025.04.03 |
---|---|
[Kotlin] 4.1 클래스 계층 정의 (1) | 2025.04.02 |
[Kotlin] 3.6 코드 깔끔하게 다듬기: 로컬 함수와 확장 (0) | 2025.04.01 |
[Kotlin] 3.4 컬렉션 처리: 가변 길이 인자, 중위 함수 호출, 라이브러리 지원 (0) | 2025.03.26 |
[Kotlin] 3.3 메서드를 다른 클래스에 추가: 확장 함수와 확장 프로퍼티 (0) | 2025.03.24 |