더북(TheBook)

자바 vs. 코틀린 자바의 ==!= 연산자는 참조 동등성(referential equality)을 비교하기 때문에 실제 문자열 내용을 비교하려면 equals() 메서드를 사용해야 한다. 코틀린에서는 ==가 기본적으로 equals()를 가리키는 편의 문법(syntatic sugar)이기 때문에 ==를 사용하면 직접 equals()를 호출하므로, 따로 equals()를 호출할 필요가 없다. 널 가능성을 논의에서 배제하면, 위 코드는 자바의 s1.equals(s2)와 같다. 코틀린에서 참조 동등성을 쓰고 싶으면 어떻게 할까? ===!== 연산자를 사용하면 된다.

문자열은 사전식 순서로(lexicographically) 정렬된다. 따라서 <, >, <=, >= 같은 연산자를 사용해 문자열을 비교할 수 있다.

println("abc" < "cba")  // true
println("123" > "34")   // false

문자열은 수 타입이나 불로 변환하는 toByte(), toShort(), toInt(), toLong(), toFloat(), toDouble(), toBoolean() 변환 함수를 제공한다. 문자열이 대상 타입으로 변환될 수 있게 형태가 잘 잡혀 있지 않다면 이런 함수는 런타임 오류를 발생시킨다.

다음은 문자열이 제공하는 다른 유용한 함수들이다.

isEmpty

isNotEmpty

문자열이 비어있는지 검사한다.

"Hello".isEmpty()

"".isEmpty()

"Hello".isNotEmpty()

false

true

true

substring

부분 문자열을 추출한다.

"Hello".substring(2)

"Hello".substring(1, 3)

startsWith

"llo"

"el"

endsWith

접두사(prefix)나 접미사(suffix)인지 검사한다.

"Hello".startsWith("Hel")

"Hello".endsWith("lo")

True

true

indexOf

인자로 받은 문자나 문자열이 수신 객체인 문자열에 나타나는 첫 번째 인덱스를 반환한다.

// 맨 앞부터 찾기

"abcabc".indexOf('b')

"abcabc".indexOf("ca")

"abcabc".indexOf("cd")

// 주어진 인덱스부터 찾기

"abcabc".indexOf('b', 2)

"abcabc".indexOf("ab", 2)

 

1

2

-1

 

4

3

이 책 전반(특히 7장 컬렉션과 I/O 자세히 알아보기)에 걸쳐 코틀린 문자열 API 예제를 더 살펴볼 것이다. 또한, 공식 문서에서도 더 많은 정보를 얻을 수 있다(kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html).

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.