문자열을 사용할 때 알아두면 유용한 method에 대해 정리해보려 한다.
contentEquals() : Boolean
CASE 1) String 문자열과 contentEquals()의 괄호 안의 문자열 비교
val str:String = "I like Apple."
var contentEquals:Boolean = str.contentEquals("I like Apple.")
CASE 2) String 문자열끼리 비교
val str:String = "I like Apple."
var str2:String = "I like Apple."
var contentEquals:Boolean = str.contentEquals(str2)
CASE 3) String 문자열과 StringBuffer의 문자열을 비교
val str:String = "I like Apple."
val sb:StringBuffer = StringBuffer("I like Apple.")
var contentEquals:Boolean = str.contentEquals(sb)
contentEquals() vs equals()
contentEquals는 문자열의 내용만 비교하기 때문에 String객체를 StringBuffer, StringBuilder 등과 비교 가능
eqauls는 String 타입인지 확인도 하기 때문에 String객체만 비교 가능 ( toString() 쓰면 거의 다 사용 가능...)
trimMargin() : String
CASE 1) 기존의 문자열
fun main() {
val rapunzel = """This is the Story/n of how I died
/nDon't worry, this is actually a very fun story.
/nAnd the truth is, it isn't even mine.
/nThis is the story of a girl named, Rapunzel.
"""
println(rapunzel.trimMargin("/n"))
// This is the Story/n of how I died
// Don't worry, this is actually a very fun story.
// And the truth is, it isn't even mine.
// This is the story of a girl named, Rapunzel.
val rapunzel2 = """This is the Story of how I died
Don't worry, this is actually a very fun story.
And the truth is, it isn't even mine.
This is the story of a girl named, Rapunzel.
"""
println(rapunzel2)
// This is the Story of how I died
// Don't worry, this is actually a very fun story.
// And the truth is, it isn't even mine.
// This is the story of a girl named, Rapunzel.
}
trimMargin()은 특정 문자가 문장의 맨 앞에 들어오는 경우 문자열의 문자열의 맨 앞 공백을 제거하고 줄 바꿈 시켜주는 함수이다.
위 문자열을 보면 2~4번째 줄을 보면 맨 앞 글자에 "/n"이 입력되어 있다. trimMargin("/n")을 통해 줄 바꿈을 해주는 걸 확인할 수 있다. 또한 1번째 줄을 보면 가장 앞에 "/n"온 것이 아니기 때문에 줄 바꿈이 일어나지 않은 것을 확인할 수 있다. (주의할 점은 대소문자 구분이 필요하다.)
contains() : Boolean
CASE 1) 특정 문자열 객체끼리 비교
fun main() {
val str: String = "I like Apple."
var fruit: String = "Apple"
val contains:Boolean = str.contains(fruit)
println(contains)
// true
}
CASE 2) 문자열을 포함하는지 확인 (대소문자 구분 제거)
fun main() {
val str: String = "I like Apple."
var fruit: String = "Apple"
val contains:Boolean = str.contains("apple", true)
println(contains)
// true
}
contains("문자열", true)처럼 입력하면 대소문자 구분 없이 포함관계를 확인한다.
toUpperCase(), toLowerCase() : String
fun main() {
val str: String = "I like Apple."
var upperString = str.toUpperCase()
var lowerString = str.toLowerCase()
println(str)
// I like Apple.
println(upperString)
// I LIKE APPLE.
println(lowerString)
// i like apple.
}
subSequence() : charSequence
fun main() {
val str: String = "I like Apple."
val testSequence = str.subSequence(0, 6)
println(testSequence)
println(str.javaClass.name)
println(testSequence.javaClass.name)
// I like
// java.lang.String
// java.lang.String
}
subSequence()는 기본적으로 substring()처럼 문자열을 인덱스 값에 맞춰 자르는 데 사용한다. 다만 차이점은 subSequence()는 CharSequence라는 인터페이스 타입으로 반환해줘서 testSequence 상수를 String타입으로 선언하면 에러가 발생한다. 그런데 신기하게 println()으로 타입을 찍어보면 String으로 나오는데, 이유를 아직 모르겠다...
'개발' 카테고리의 다른 글
compareTo() 정리(Int) - Kotlin (2) (0) | 2021.03.12 |
---|---|
compareTo() 정리(String) - Kotlin (1) (2) | 2021.03.12 |
개발하면서 자주 썼던 함수 정리 (maxBy, minBy, groupBy, map, reduce, indices, compareTo) (0) | 2021.03.05 |