본문 바로가기
Do it 코틀린 프로그래밍

코틀린 문자열

by 차누감 2020. 8. 22.

문자열은 연속된 문자의 배열과 같습니다.

불변의 값으로 생성되기 때문에 참조되고 있는 메모리가 변경될 수 없습니다. 새로운 값을 할당하려고 한다면 기존 메모리 이외에 새로운 문자열을 위한 메모리를 할당해야 합니다.

 

    var s ="abcdef"
    s="xyz" //  새로운 메모리 공간이 생성

 

문자열 추출하고 병합하기

문자열 추출 : String.substring(인덱스 범위), CharSequence.subSequence(인덱스 범위)

    var s ="abcdef"
    s=s.substring(0..1)+"x"+s.substring(3..s.length-1)  //  ab 추출하고 x를 덧붙이고 다시 def 추출
    //  s="abxdef"

 

문자열 비교하기

String.compareTo(String)

    var s1="Hello Kotlin"
    var s2="Hello KOTLIN"
    //  같으면 0, s1<s2 이면 양수, 반대면 음수 반환
    println(s1.compareTo((s2)))     //  32
    println(s1.compareTo(s2, true)) //  대소문자 무시 결과 : 0

 

문자열이 자주 변경되는 경우 String Builder 사용

단, 기존의 문자열보다는 처리 속도가 느리고, 만일 단어를 변경하지 않고 그대로 사요하면 임시 공간인 메모리를 조금 더 사용하므로 낭비된다는 단점이 있습니다.

    var s=StringBuilder("Hello")
    s[2]='x'    //  s는 메모리 공간을 새로 만들지 않고 여유분 공간을 이용해 요소 변경
    println(s)  //  Hexlo
    
    // StringBuilder 관련 메소드	append, insert, delete
    s.append("World")   //  문자열이 추가되어 HexloWorld
    s.insert(10,"Added")   //  인덱스 10번부터 추가되어 HexloWorldAdded
    s.delete(5,10)  //  인덱스 5번부터 10번까지 삭제되어 HexloAdded

 

기타 문자열 처리 

문자열 잘라내기 split()

    var deli= "Welcome to Kotlin"
    val sp=deli.split(" ")  //  split()을 통해 공백 문자 기준으로 문자열을 잘라내고, sp는 컬렉션 List<String>으로 추론 할당됩니다.
    println(sp) //  [Welcome, to, Kotlin]

문자열을 정수로 toInt()

    val number:Int="123".toInt()

 

이스케이프 문자의 종류

종류
\t  탭(tab) \r  캐리지 리턴(carriage return) \  백슬래시(backslash)
\b  백스페이스(backspace) \'  작은따옴표(single quote) \$  달러 기호(dallar)
\n  개행(newline) \"  큰따옴표(double quote)  

 

형식 문자 사용하기

형식 문자의 종류

종류
%b  참과 거짓의 Boolean 유형 %o  8진 정수 %g  10진 혹은 E표기법의 실수
%d  부호 있는 정수 %t  날짜나 시간 %n  줄 구분
%f  10진 실수 %c  문자 %s  문자열
%h  해시코드 %e  E 표기법의 실수 %x  16진 정수
    val pi= 3.1415926
    val dec= 10
    val s= "hello"
    println("pi= %.2f, %3d, %s".format(pi,dec,s))   //  pi= 3.14,  10, hello

'Do it 코틀린 프로그래밍' 카테고리의 다른 글

코틀린 컬렉션(2) - List 활용하기  (0) 2020.08.24
코틀린 컬렉션(1) - 기본 구조  (1) 2020.08.23
코틀린 배열  (0) 2020.08.21
코틀린 제네릭  (0) 2020.08.20
코틀린 상속과 다형성  (2) 2020.08.19

댓글