with ChatGPT 시리즈는 ChatGPT의 내용과 개인의 생각을 토대로 학습해 보는 컨텐츠입니다.
Kotlin에서 String은 불변(immutable) 객체이며, 문자열 템플릿(String Template)을 활용해 가독성 좋은 코드를 작성할 수 있습니다.
이번 주제에서는 문자열을 다루는 방법과, Kotlin에서 강력한 기능을 제공하는 문자열 템플릿을 활용하는 방법을 살펴보겠습니다.
1. 코틀린의 String 기본 개념
Kotlin에서 String은 Java의 String과 동일한 방식으로 동작하지만, 더 간결한 문법을 제공합니다.
✅ 문자열 선언과 사용법
val str1: String = "Hello, Kotlin!" // 명시적 타입 선언
var str2 = "Welcome!" // 타입 추론 (String으로 자동 결정)
- val을 사용하여 문자열을 선언하면 불변 (immutable)
- var을 사용하면 새로운 문자열로 변경 가능하지만, 기존 문자열이 변경되는 것은 아님
var greeting = "Hello"
greeting = "Hi" // ✅ 가능 (새로운 문자열을 할당하는 것)
Kotlin의 String은 불변 객체이므로, 기존 문자열을 변경하는 것이 아니라 새로운 문자열을 할당하는 방식으로 동작한다.
🛠️ 2. 문자열 템플릿 (String Template)이란?
- 문자열 템플릿 (String Template)은 문자열 내부에서 변수나 표현식을 간편하게 삽입할 수 있는 기능입니다.
- ${변수} 또는 $변수 형식을 사용하여 문자열을 동적으로 생성할 수 있습니다.
✅ 1️⃣ 기본적인 문자열 템플릿 사용법
val name = "Kotlin"
val version = 1.9
val message = "Hello, $name! Version: $version"
println(message) // 출력: Hello, Kotlin! Version: 1.9
- $변수 형식을 사용하면 문자열 내에서 변수 값을 바로 사용할 수 있음
✅ 2️⃣ 표현식 (Expression) 삽입하기
val a = 5
val b = 10
val result = "Sum of $a and $b is ${a + b}"
println(result) // 출력: Sum of 5 and 10 is 15
- 변수뿐만 아니라, 연산 결과 등 표현식도 ${} 안에 삽입 가능
- $a + $b처럼 쓸 수 없고, 연산은 반드시 ${} 안에서 수행해야 함
📏 3. 문자열 관련 주요 함수 활용하기
Kotlin의 String은 다양한 문자열 관련 함수를 제공합니다.
✅ 1️⃣ 문자열 길이 확인
val text = "Kotlin"
println(text.length) // 출력: 6
- .length를 사용하여 문자열 길이를 가져올 수 있음
✅ 2️⃣ 문자열 대소문자 변환
val text = "Kotlin"
println(text.uppercase()) // 출력: KOTLIN
println(text.lowercase()) // 출력: kotlin
- uppercase(), lowercase()를 사용하여 문자열의 대소문자 변환 가능
✅ 3️⃣ 특정 문자열 포함 여부 확인
val text = "Hello Kotlin"
println(text.contains("Kotlin")) // 출력: true
println(text.startsWith("Hello")) // 출력: true
println(text.endsWith("World")) // 출력: false
- contains(), startsWith(), endsWith()를 활용하여 문자열을 포함 여부 확인 가능
✅ 4️⃣ 문자열 자르기 (substring)
val text = "Hello, Kotlin!"
println(text.substring(7, 13)) // 출력: Kotlin
- substring(startIndex, endIndex)를 사용하여 특정 부분만 추출 가능
✅ 5️⃣ 문자열 분할 (split)
var data = "apple,banana,grape"
val fruits = data.split(",") // 리스트로 변환됨
println(fruits) // 출력: [apple, banana, grape]
- split()을 사용하면 문자열을 특정 구분자로 분할 가능
4. 멀티라인 문자열 (Raw String)과 trimMargin()
Kotlin에서는 """ (트리플 쿼트)를 사용하여 여러 줄 문자열(Multiline String)을 선언할 수 있습니다.
val text = """
Kotlin is Awesome!
Let's learn Kotlin.
""".trimIndent()
println(text)
- trimIndent()를 사용하면 자동으로 들여 쓰기를 조정해 줌
val text = """
|Kotlin is great!
|Let's start coding.
""".trimMargin()
println(text)
- trimMargin()을 사용하면 | 문자를 기준으로 들여 쓰기를 정리 가능
🚀 5. 문자열 템플릿을 활용한 실전 예제
✅ 1️⃣ JSON 형식 문자열 생성
val name = "Alice"
val age = 25
val json = """
{
"name": "$name",
"age": $age
}
""".trimIndent()
println(json)
- 문자열 템플릿을 활용하면 JSON, SQL 같은 형식을 쉽게 생성할 수 있음
✅ 2️⃣ 동적 메시지 출력
fun getGreeting(user: String, score: Int) =
"Hello, $user! Your score is ${if (score > 80) "High" else "Low"}."
println(getGreeting("Alice", 90)) // 출력: Hello, Alice! Your score is High.
- 문자열 템플릿과 조건문을 함께 활용 가능
🔥 문자열 템플릿과 문자열 처리 정리
기능 | 사용법 | 예제 |
문자열 선언 | var str = "Hello" | "Hello" |
문자열 템플릿 | "Hello, $name!" | $변수, ${표현식} |
문자열 길이 | str.length | 6 |
대소문자 변환 | str.uppercase() | "HELLO" |
포함 여부 확인 | str.contains("Kotlin") | true |
문자열 분할 | str.split(",") | List<String> |
부분 문자열 | str.substring(1, 4) | "ell" |
여러 줄 문자열 | """Hello""" | 멀티라인 지원 |
🤔 추가로 생각해 볼 질문들
- Kotlin에서 String은 불변인데, 문자열을 변경해야 할 경우 어떤 방법을 사용할 수 있을까?
- Java의 StringBuilder와 Kotlin의 String을 비교하면 어떤 차이가 있을까?
- 문자열 템플릿을 사용하면 성능이 저하될 가능성이 있을까? 그렇다면 최적화 방법은?
- 멀티라인 문자열에서 공백을 제거하는 방법은 trimIndent() 외에도 있을까?
- 문자열을 CharArray로 변환하여 처리하는 방법은 어떻게 할 수 있을까?