言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

Kotlin辞典

  1. トップページ
  2. Kotlin辞典
  3. String テンプレート

String テンプレート

対応: Kotlin 1.0(2016)

文字列テンプレートは文字列リテラルの中に変数や式を『$』や『${}』で埋め込む機能です。文字列連結より読みやすく、Kotlin では広く使われています。

構文

// 変数を埋め込みます。
"こんにちは、$name さん"

// 式を埋め込みます(波括弧が必要)。
"合計: ${price * count} 円"

// 生文字列(トリプルクォート)。
"""
複数行の
文字列
"""

構文一覧

構文概要
$変数名変数の値を文字列に埋め込みます。変数名の直後に英字・数字・アンダースコアが続く場合は波括弧が必要です。
${式}任意の式を評価した結果を埋め込みます。メソッド呼び出しや計算式も記述できます。
"""..."""生文字列(raw string)です。改行やバックスラッシュをエスケープなしで含められます。
trimIndent()生文字列の共通インデントを除去します。コードのインデントを保ちながら文字列を整形できます。
trimMargin()各行の先頭にある指定文字(デフォルト『|』)までを除去します。

サンプルコード

sample_string_template.kt
fun main() {
    val name = "八神庵"
    val age = 25

    // 変数を埋め込みます。
    println("こんにちは、$name さん") // 『こんにちは、八神庵 さん』と出力されます。

    // 式を埋め込みます。
    println("来年は ${age + 1} 歳です。") // 『来年は 26 歳です。』と出力されます。

    // メソッド呼び出しも埋め込めます。
    val items = listOf("草薙京", "テリー・ボガード", "ブルー・マリー")
    println("${items.size} 人のファイターがいます。") // 『3 人のファイターがいます。』と出力されます。
    println("大文字: ${name.uppercase()}")           // 『大文字: 八神庵』と出力されます。

    // 生文字列(改行やタブをそのまま含められます)。
    val json = """
        {
            "name": "$name",
            "age": $age
        }
    """.trimIndent()
    println(json)
    // {
    //     "name": "八神庵",
    //     "age": 25
    // }
    // と出力されます。

    // $ 記号自体を出力したい場合は ${'$'} と書きます。
    val price = 500
    println("価格: ${'$'}$price") // 『価格: $500』と出力されます。

    // trimMargin を使った例です。
    val text = """
        |1行目
        |2行目
        |3行目
    """.trimMargin()
    println(text)
    // 『1行目』『2行目』『3行目』がそれぞれ改行されて出力されます。
}
kotlinc string_template.kt -include-runtime -d string_template.jar
java -jar string_template.jar
こんにちは、八神庵 さん
来年は 26 歳です。
3 人のファイターがいます。
大文字: 八神庵
{
    "name": "八神庵",
    "age": 25
}
価格: $500
1行目
2行目
3行目

概要

文字列テンプレートを使うと、『"Hello, " + name + "!"』のような文字列連結よりも読みやすいコードが書けます。変数名の直後に英字が続く場合(例:『${count}個』)は波括弧を省略すると変数名の一部と誤認されるため、必ず『${}』を使ってください。

生文字列は正規表現パターンや JSON のようなエスケープが多い文字列の記述に特に便利です。基本データ型については『基本データ型』を、変数宣言については『val / var』を参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。