with ChatGPT/코틀린 with ChatGPT

[코틀린 with ChatGPT #4] 코틀린에서 문자열(String)과 문자열 템플릿(String Template)을 어떻게 활용하는가?

dev_writer 2025. 3. 18. 09:00
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""" 멀티라인 지원

 

🤔 추가로 생각해 볼 질문들

  1. Kotlin에서 String은 불변인데, 문자열을 변경해야 할 경우 어떤 방법을 사용할 수 있을까?
  2. Java의 StringBuilder와 Kotlin의 String을 비교하면 어떤 차이가 있을까?
  3. 문자열 템플릿을 사용하면 성능이 저하될 가능성이 있을까? 그렇다면 최적화 방법은?
  4. 멀티라인 문자열에서 공백을 제거하는 방법은 trimIndent() 외에도 있을까?
  5. 문자열을 CharArray로 변환하여 처리하는 방법은 어떻게 할 수 있을까?