[完全征服コトリン]文字列


文字列


文字列は連続文字の配列に等しい.また、文字列は불변(immutable)なので、参照メモリは変更できません.Pythonとは違います.Pythonは文字列をリストとして処理するため、値を変更することができますが、コトリンはそうではありません.

文字列の基本処理


varまたはvalとして宣言された文字列を変更しようとすると、エラーが発生します.前述したように、코틀린の文字列は変わらないからです.ただし、varと宣言すると、完全に新しい文字列を割り当てることができます.
fun main() {
    val hello : String = "Hello Kotlin"
    // hello[0] = "k" 오류 발행

    var temp : String = "기존 문자열"
    temp = "새로운 문자열" // var로 선언한 경우 새로운 문자열 할당 가능
}
新しい文字列を割り当てると、既存の文字列で使用されているメモリ領域はGC(Garbage Collector)によって削除されます.

文字列の抽出とマージ

substringによって文字列を抽出し、+にマージすることができる.
fun main() {
    val s1 = "hello"
    println(s1.substring(0..1)) // From, To를 지정해서 문자열을 추출할 수 있다.

    val s2 = s1.substring(0..0) + 'i' // + 를 통해 새로운 문자열로 병합할 수 있다.
    println(s2)
}

比較文字列

코틀린では、文字列を比較するために、compareToまたは==を使用することができる.compareToはs 1です.compareTo(s 2)←このように使えます.s 1がs 2に等しい場合、0、s 1は正の数より小さく、s 2が小さい場合は負の数を返します.また、trueを2番目のパラメータとすると、文字列を比較する際に大文字と小文字を区別しません.
fun main() {
    val s1 = "hello"
    val s2 = "HELLO"
    // 두 번째인자로 true를 넣어주면 대소문자 구별없이 비교
    if (s1.compareTo(s2, true) == 0) {
        println("Equal!")
    } else {
        println("Not Equal!")
    }
//    == 를 사용해도 비교가능
//    if (s1 == s2) {
//        println("Equal!")
//    } else {
//        println("Not Equal!")
//    }
}

StringBuilder

StringBuilderは、文字列をより流動性のあるものにします.文字列は、より大きなスペースを使用して文字列を変更できます.しかし、欠点は、既存の文字列よりも処理速度が遅いことです.
fun main() {
    var s1 = StringBuilder("Hello")
    s1[0] = 'C' // 기존에는 불가능 했지만 StringBuilder를 이용하면 가능
}