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
- 자바스크립트 코딩의 기술
- GoingBus
- 반복문
- 고잉버스
- Linux
- 카카오
- 리눅스
- 백준 javascript
- 문자열
- JavaScript
- 명령어
- Kotlin
- 연습문제
- 리눅스마스터 1급 정리
- 자바
- 코딩테스트
- 백준 java
- 프로그래머스
- 리눅스마스터1급
- java 백준 1차원 배열
- 스프링 컨테이너
- Memoir
- Java
- 스프링 빈
- map
- 리눅스마스터 3과목
- 월간코드챌린지
- 코테
- 개발자 회고록
- toCharArray
Archives
- Today
- Total
hoon DevLog
Kotlin 코틀린 문자열 템플릿 및 기본 문자열 연산 본문
반응형
문자열 리터럴 정의
문자열 리터럴의 정의는 큰따옴표(")로 문자를 감싸는 것
val test = "Hello, world!"
문자열에 특수 문자가 들어가면 백슬래시(\) 뒤에 한 문자나 숫자 조합이 오는 문자 조합을 이루는
이스케이프 시퀀스(Escape Sequence)를 사용해야 함!
val text = "Hello, world!\nThis is \"multiline\" string"
// Hello, world!
// This is "multiline" string
println("\u03C0 \u2248 3.14") // π ≈ 3.14
문자열 템플릿
기본적으로 자바에서 사용하는 문자열과 비슷하나,
코틀린은 여러 식에서 문자열을 합성해 내는 훨씬 강력한 방법을 지원한다.
아래 코드는 이름을 입력받아, 개행 후 오늘 날짜를 출력한다.
import java.util.Date
fun main() {
val name = readLine()
println("Hello, ${name}!\nToday is {Date()}")
}
- 기본적으로 ${} 의 중괄호 사이에 넣기만 하면 어떤 코틀린 식이든 문자열에 넣을 수 있다.
- 간단한 변수 참조인 경우 $name 같이 중괄호를 생략하고 달러($) 기호만 붙여도 된다.
- 이런 기능을 문자열 템플릿이라고 한다.
로우 문자열(raw string)
- 로우 문자열을 사용하면 이스케이프 시퀀스를 사용하지 않고도 문자열을 작성할 수 있다.
- 이런 리터럴은 큰 따옴표 세 개로 둘러 싸여 있고, 새 줄 문자를 포함한 사용자가 입력한 문자를 포함할 수 있다.
import java.util.Date
fun main() {
val name = readLine()
val message = """ Hello, $name,
Today is${Date() } """.trimIndent()
println(message)
}
- trimIndent()는 여러줄에 공통된 최소 들여 쓰기를 제거해 주는 표준 코틀린 함수이다.
- 로우 문자열에 특수문자를 추가하고 싶은 경우 ${} 안에 특수문자를 넣으면 된다.
- JVM으로 컴파일 되는 애플리케이션에서 문자열은 JVM의 String클래스로 표현된다.
fun main() {
val message = """This is triple quote : ' ${"\"\"\""} '""".trimIndent()
// This is triple quote : ' """ '
}
length, lastIndex 프로퍼티
- length : 모든 String 인스턴스는 문자열에 든 문자 수를 표현
- lastIndex : 문자열의 마지막 문자 인덱스를 표현하는 프로퍼티를 제공
"Hello!".length // 6
"Hello!".lastIndex // 5 (첫번째 문자의 인덱스가 0 이므로)
[] 연산자로 개별문자 접근
- [] 연산자에 인덱스를 넣어 개별문자에 접근하고, 인덱스는 0부터 시작!
- 잘못된 인덱스를 넘기면 자바와 마찬가지로 StringIndexOutOfBoundsException 예외가 발생
val s = "Hello! "
println(s[0]) // H
println(s[1]) // e
println(s[5]) // !
println(s[10]) // 잘못된 인덱스
- 필자는 Java의 char 배열(char [])과 비슷한 맥락으로 이해했다!
두 문자 연결
- + 연산자로 두 문자를 연결 가능
val s = "The sum is : " + sum // "The sum is $sum" 으로 대체 가능
두 문자열 비교
- 문자열은 == 와 != 를 사용해서 동등성 비교 가능
- 이들 연산은 문자열의 내용을 비교하므로 문자의 순서와 같이 길이가 같으면 다른 객체의 인스턴스를 같은 문자열로 간주한다!!
val s1 = "Hello!"
val s2 = "Hel" + "lo!"
println(s1 == s2) // ture
- 참조동등성을 비교하려면 === 와 !== 연산자를 사용하면 된다.
- <, >, <=, >= 같은 연산자를 사용해 문자열을 비교할 수 있다.
println("abc" < "cba") // true
println("123" > "34") // false
- 문자열은 사전식 순서(오름차순)로 정렬되므로 정렬된 순서대로 커진다고 생각하면 된다!
- 숫자 비교가 아닌 문자열 숫자("숫자")를 비교하는 것이므로 "34"가 더 나중에 정렬되므로 false
타입 변환 함수
- 말 그대로 기존의 타입을 바꿔주는 함수로 to변환할 타입()으로 명명된다!
- toByte(), toShort(), toInt(), toLong(), toFloat(), toDouble(), toBoolean()
기타 문자열 함수
- isEmpty : 문자열이 비어있는지 검사
- isNotEmpty : 문자열이 비어있지 않은지 검사
- substring : 부분 문자열 추출
- startsWith : 접두사(prefix) 검사
- endsWith : 접미사(suffix) 검사
- indexOf : 인자로 받은 문자나 문자열이 수신 객체인 문자열에 나타나는 첫번째 인덱스를 반환
println("Hello".isEmpty()) // "Hello" 문자열이 비어있는지 확인 (false 반환)
println("".isEmpty()) // 빈 문자열이 비어있는지 확인 (true 반환)
println("Hello".substring(2)) // "Hello" 문자열의 인덱스 2부터 끝까지 부분 문자열 반환 ("llo")
println("Hello".substring(1, 3)) // "Hello" 문자열의 인덱스 1부터 3 전까지 부분 문자열 반환 ("el")
println("Hello".startsWith("Hel")) // "Hello" 문자열이 "Hel"로 시작하는지 확인 (true 반환)
println("Hello".endsWith("lo")) // "Hello" 문자열이 "lo"로 끝나는지 확인 (true 반환)
println("abcabc".indexOf('b')) // "abcabc" 문자열에서 문자 'b'의 첫 번째 인덱스 반환 (1)
println("abcabc".indexOf("ca")) // "abcabc" 문자열에서 문자열 "ca"의 첫 번째 인덱스 반환 (2)
println("abcabc".indexOf("cd")) // "abcabc" 문자열에서 문자열 "cd"를 찾을 수 없으므로 -1 반환
println("abcabc".indexOf('b', 2)) // "abcabc" 문자열에서 인덱스 2부터 문자 'b'를 검색하여 첫 번째 인덱스 반환 (4)
println("abcabc".indexOf("ab", 2)) // "abcabc" 문자열에서 인덱스 2부터 문자열 "ab"를 검색하여 첫 번째 인덱스 반환 (3)
결과
뭔가 문법적으로 정확하게 딱딱 들어맞는 Java와 달리,
비교적 자유도가 높은 코틀린이 좀 더 편해 보이는 듯하다.
물론 아직 익숙지 않아 계속해서 코딩을 직접 하면서 익혀 나가야겠다!
언제나 새로운 정보 공유와 잘못된 정보
비판/지적/태클은 환영입니다!
도움이 되셨다면 공감♥️, 댓글 부탁드려요:)
끝.
728x90
반응형
'IT > Kotlin' 카테고리의 다른 글
Kotlin array 코틀린 배열 참조 및 사용 emptyArray arrayOf (0) | 2024.08.07 |
---|---|
Kotlin 비교와 동등성 (5) | 2023.09.14 |
Kotlin boolean 타입 및 비교 연산 (4) | 2023.09.13 |
Kotlin char 문자 타입 (0) | 2023.08.24 |
Kotlin 정수 타입 (2) | 2023.08.14 |