본문 바로가기
Android/안드로이드 스터디(Kotlin)

Kotlin] 51. CharSequence

by 김마리님 2020. 12. 24.

charSequence는 문자 클래스들이 기본적으로 가지는 인터페이스이다. (sequence라고 해서 진짜 상속하진 않음)

이 인터페이스는 하나의 프로퍼티와 두 개의 멤버함수를 가진다

 

length : 문자열의 길이를 int로 반환

get(index) : 해당 인덱스의 문자열 하나를 char로 반환

subSequence (startIndex, endIndex) : 첫 매개변수 인덱스와 마지막 매개변수 인덱스 사이(-1) 구간의 문자열을 뽑아 새 문자열로 반환

 

package charSequenceEx

fun main() {
    var seq : CharSequence = "Hello"
    println("length : ${seq.length}")
    println("get : ${seq.get(1)}")
    println("subSequence : ${seq.subSequence(1,3)}")

}

 

결과 :

 

length : 5
get : e
subSequence : el

 

 


 

charSequence는 겉보기엔 별거 아닌거 같은 인터페이스지만 확장함수를 이용하면 유용하다.

 

trim함수가 있다.

package charSequenceEx

fun main() {
    val str = " hello "

    println(str.removeRange(0,5))

    println(str.padStart(20, '*'))
    println(str.padEnd(17, '*'))

    println(str.trimStart())
    println(str.trimEnd())
    println(str.trim())

    println(str.slice(4..6))
    println(str.subSequence(4..6))
    println(str.substring(4..6))

    println(str.reversed())
}

 

removeRange : 첫번째 매개변수는 지울 시작지점을 의미한다. 두번째 매개변수는 지울 갯수를 의미한다.

 

padStart : 빈 공간의 시작을 두번째 매개변수로 채워, 첫번째 매개변수의 수까지 글자로 채운다.

padStart : 빈 공간의 끝을 두번째 매개변수로 채워, 첫번째 매개변수의 수까지 글자로 채운다.

 

trimStart : 문자열의 시작에 있는 공백을 삭제한다

trimEnd : 문자열의 끝에 있는 공백을 삭제한다

trim : 문자열 양 옆의 공백을 삭제한다.

 

slice, subSequence, substring : 지정된 범위 내의 글을 잘라 반환한다. slice와 subSequence는 CharSequence로 반환하고 substring은 string 타입으로 반환한다.

 

reverse : 문자열을 거꾸로 뒤집어 반환한다.

 

 

결과 :


************* hello 
 hello **********
hello 
 hello
hello
lo 
lo 
lo 
 olleh 

 

 


제거뿐만 아니라 CharSequence를 나눌수도 있다.

 

package charSequenceEx

fun main() {
    val hello : CharSequence = "안녕하세요.\n고맙습니다.\n반갑습니다."
    val time : CharSequence = "2020-12-29"

    println(hello.lines())

    for (line in hello.lineSequence()) {
        println(line)
    }
    println(time.split('-'))
}

 

lines : \n을 기준으로 나누어 배열로 반환

lineSequence : \n을 기준으로 나누어 Sequence 타입으로 반환

split : 첫번째 매개변수로 받은 문자열을 기준으로 CharSequence를 쪼개어 배열로 반환

 

 

결과 :

 

[안녕하세요., 고맙습니다., 반갑습니다.]
안녕하세요.
고맙습니다.
반갑습니다.
[2020, 12, 29]

반응형