English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Kotlinの文字列と文字列テンプレート

この記事では、サンプルを使用してKotlinの文字列、文字列テンプレート、および一般的な文字列属性と関数を学びます。

Kotlin String(文字列)

文字列は文字のシーケンスです。例えば、「Hello there!」は文字列リテラルです。

Kotlinでは、すべての文字列はStringクラスのオブジェクトです。これは、「Hello here!」などの文字列リテラルがそのクラスのインスタンスとして実装されることを意味します。

文字列変数を作成する方法は?

これはKotlinでString変数を定義する方法です。例えば、

val myString = "Hey there!"

ここでは、myStringはString型の変数です。

String型の変数を宣言し、そのタイプを指定して、プログラムの後で変数を初期化する一つの文で初期化できます。

val myString: String
... .. ...
myString = "Howdy"

文字列の文字にどうアクセスするか?

文字列の要素(文字)にアクセスするには、インデックスアクセス演算子を使用します。例えば、

val myString = "Hey there!"
val item = myString[2]

ここでは、item変数はmyString文字列の第3文字yを含んでいます。Kotlinではインデックスは0から始まるため、 1。

val myString = "Hey there!"
var item: Char
item = myString[0]    // item = 'H'
item = myString[9]    // item = '!'
item = myString[10]   // エラー!文字列のインデックスが範囲外です
item =  myString[-1]  // エラー!文字列のインデックスが範囲外です

例:文字列を巡る

文字列の要素を巡る必要がある場合、以下を使用できますforループ簡単実現

fun main(args: Array<String>) {
    val myString = "Hey!"
    for (item in myString) {
        println(item)
    }
}

プログラムを実行すると、以下の結果が表示されます:

H
e
y
!

Kotlinの文字列は変更不可です

Javaと同様に、Kotlinでは文字列は変更不可です。これは、文字列の単一文字を変更できないことを意味します。例えば、

var myString = "Hey!"
myString[0] = 'h'      // エラー!文字列

しかし、varキーワードで文字列変数を宣言した場合、その変数を再割り当てすることができます。(推薦読書Kotlin var と val

例:再割り当てる文字列変数。

fun main(args: Array<String>) {
    var myString = "Hey!"
    println("myString  = $myString")
    myString = "Hello!"
    println("myString  = $myString")
}

プログラムを実行すると、以下の結果が表示されます:

myString  = Hey!
myString  = Hello!

文字列文字

リテラルは固定値のソースコード表現形式です。例えば、「Hey there!」は計算せずにプログラムに直接表示される文字列文字(例えば、変数)。

Kotlinには二種類の文字列リテラルがあります:

1.エスケープされた文字列

エスケープされた文字列には既にエスケープされた文字が含まれる可能性があります。例えば、

val myString = "Hey there!\n"

ここでは、\nはエスケープシンボルであり、テキストに换行符を挿入する位置に使用されます。

以下はKotlinがサポートするエスケープシンボルのリストです:

  • \t -  タブを挿入する

  • \b - バックスペースを挿入する

  • \n - ラインフィードを挿入する

  • \r - リターンキャラクターを挿入する

  • \' - シングルクオートを挿入する

  • \" - ダブルクオートを挿入する

  • \\ - アンダースコアを挿入する

  • \$ - ドル記号を挿入する

2.元の文字列

元の文字列には改行符(改行符ではない)と任意のテキストが含まれることができます。元の文字列は三つの引用符"""で区切られます。例えば、

fun main(args: Array<String>) {
    val myString = """
    for (character in "Hey!")
        println(character)
"""
    print(myString)
}

プログラムを実行すると、以下の結果が表示されます:

    for (character in "Hey!")
        println(character)

trimMargin()関数を使用して元の文字列の先頭のスペースを削除できます。例えば、

例:元の文字列の印刷

fun main(args: Array<String>) {
    println("trimMargin関数を使用しない出力:")
    val myString = """
    |Kotlinは興味深いです。
    |KotlinはJetBrainsによってスポンサーおよび開発されています。
"""
    println(myString)
    println("trimMargin関数を使用して出力:\n")
    println(myString.trimMargin())
}

プログラムを実行すると、以下の結果が表示されます:

trimMargin関数を使用しない出力:
    |Kotlinは興味深いです。
    |KotlinはJetBrainsによってスポンサーおよび開発されています。
trimMargin関数を使用して出力:
Kotlinは興味深いです。
KotlinはJetBrainsによってスポンサーおよび開発されています。

デフォルトでは、trimMargin()関数は|を使用してマージンプレフィックスとしています。しかし、新しい文字列を関数に渡すことでそれを変更できます。

例:引数を持つtrimMargin()関数

fun main(args: Array<String>) {
    val myString = """
    !!! Kotlinは興味深いです。
    !!! KotlinはJetBrainsによってスポンサーおよび開発されています。
"""
    println(myString.trimMargin("!!! "))
}

プログラムを実行すると、以下の結果が表示されます:

Kotlinは興味深いです。
KotlinはJetBrainsによってスポンサーおよび開発されています。

Kotlin 文字列テンプレート

Kotlinには素晴らしい機能である文字列テンプレートがあります。これは文字列にテンプレート式を含めることを許可します。

文字列テンプレートの式はドルシンボル $ で始まります。以下はいくつかの例です:

例:Kotlinの文字列テンプレート

fun main(args: Array<String>) {
    val myInt = 5;
    val myString = "myInt = $myInt"
    println(myString)
}

プログラムを実行すると、以下の結果が表示されます:

myInt = 5

これは、文字列内の表达式$myInt($シンボルで始まる表达式)が評価され、文字列に結合されるためです。

例:原始文字列を含む文字列テンプレート

fun main(args: Array<String>) {
    val a = 5
    val b = 6
    val myString = """
    |${if (a > b) a else b}
"""
    println("より大きな数字は: ${myString.trimMargin()}")
}

プログラムを実行すると、以下の結果が表示されます:

より大きな数字は: 6

いくつかの文字列属性と関数

Kotlinでは、字面量は String クラスのインスタンスとして実装されていますので、そのクラスのいくつかのメソッドと属性を使用できます。

  • length 属性 - 文字列の文字シーケンスの長さを返します。

  • compareTo 関数 -この文字列(オブジェクト)を指定されたオブジェクトと比較します。指定されたオブジェクトが等しい場合、0を返します。

  • get 関数 - 指定されたインデックス处的文字を返します。get 関数ではなくインデックスアクセス演算子を使用できます。なぜなら、インデックスアクセス演算子は内部で get 関数を呼び出すからです。

  • plus 関数 - 新しい文字列を返します。この関数に渡された文字列とこの関数に渡された文字列を結合して得られる文字列です。以下を使用できます。 + 演算子が plus 関数に置き換わるのは、+演算子がバックグラウンドで plus 関数を呼び出します。

  • subSequence 関数 - 指定された開始と終了インデックスから新しい文字列シーケンスを返します。

例:字符串属性和関数

fun main(args: Array<String>) {
    val s1  = "Hey there!"
    val s2 = "Hey there!"
    var result: String
    println("s1字符串的长度为 ${s1.length}.")
    result = if (s1.compareTo(s2) == 0) "相等" else "不相等"
    println("字符串s1とs2是 $result.")
    // s1.get(2) 等同于 s1[2]
    println("第三个字符是 ${s1.get(2}).
    result = s1.plus(" How are you?") // result = s1 + " How are you?
    println("result = ${result})
    println("サブストリングは「${s1.subSequence(4, 7}}
}

プログラムを実行するときの、出力は:

s1文字列の長さは 10。
文字列s1とs2は一致。
第3文字は「y」。
result = Hey there! How are you?
サブストリングは「the」