Kotlin文字列テンプレート

1.概要

このチュートリアルでは、Kotlinの String テンプレートとは何か、そしてそれらの使い方を説明します。

他の機能に慣れるため、そしてKotlinの使い方を知るために、私たちのリンクの1つ、/kotlin[Kotlinチュートリアル]をご覧ください。

2. Kotlinの文字列

Javaのように、Kotlinの Strings は不変です。つまり、一度作成した String を変更することはできません。しかし、与えられたものから別の String を派生させることができます。

KotlinはJavaの String クラスに追加機能を追加しました。

たとえば、メソッド padEnd() を使用すると、 String、 をフォーマットして、次の式を実行できます。

"Hello".padEnd(10, '!')

これは新しい文字列 “ Hello !!!!!” を生成します。

3.文字列テンプレート

文字列テンプレートは、埋め込み式を含む String リテラルです。

たとえば、Javaの次のコードは、

String message = "n = " + n;

コトリンではちょうどです:

val message = "n = $n"

任意の有効なKotlin式を String テンプレートで使用できます。**

val message = "n + 1 = ${n + 1}"
  • Javaとは異なり、Kotlinの多くの構成要素(ただし、すべてではない)は式です**

したがって、 String テンプレートにもロジックを含めることができます。

val message = "$n is ${if(n > 0) "positive" else "not positive"}

中括弧内には有効なKotlin式があることに注意してください。

これが、二重引用符をエスケープしない理由です。

String テンプレートは、式を評価し、評価結果に基づいて__toString()メソッドを呼び出すことによって解決されます。

String テンプレートはネストすることができます。

val message = "$n is ${if (n > 0) "positive" else
  if (n < 0) "negative and ${if (n % 2 == 0) "even" else "odd"}" else "zero"}"

String テンプレートパーサーは、最もネストされたテンプレートからそれを解決し始め、それを評価して、それに対して toString() メソッドを呼び出します。

String テンプレートはネストすることができますが、できるだけ単純にすることをお勧めします。 Kotlinが多くの便利なツールを提供してくれるので、これはまったく難しいことではありません。

String テンプレートの一部としてではなく、生のドル記号を使用したい場合はどうなりますか?**

それからそれの前にバックスラッシュを置くことによってそれをエスケープする:

val message = "n = \$n"

ドル記号の後に続くものは通常の String になります - それはもう評価されず、そのまま解釈されます。

4.生の文字列

さらに、Kotlinでは、エスケープする必要なしに特殊文字を含むことができる三重引用符で囲まれた生の文字列を持っています。

結果の String は、トリプル二重引用符 の2つの連続した重複しないオカレンスの間に含まれます。

たとえば、Javaでは、 C:\ Repository \ read.meにあるリソースへのWindowsスタイルのファイルパスを含む String__を正しく作成するために、次のように定義します。

String path = "C:\\Repository\\read.me"

Kotlinでは、同じ結果を得るために三重引用符を使うことができます。

val path = """C:\Repository\read.me"""

複数行の Stringを作成するためにこの表記法を使うかもしれません:

val receipt = """Item 1: $1.00
Item 2: $0.50"""

これは正確に2行にわたる String を作成します。このインデントを好むならば:

val receipt = """Item 1: $1.00
                >Item 2: $0.50""".trimMargin(">")

trimMargin() メソッドを使用して、すべての行の先頭から最初にマージンプレフィックスが出現するまでの最後の空白を削除します(上記の例では > )。

  • 三重引用符で囲まれた文字列はエスケープシーケンスをサポートしません** 。それを書いたら

val receipt = """Item 1: $1.00\nItem 2: $0.50"""

2行の Stringを取得するには、予想される改行ではなく \ n__という文字を含む1行を取得します。

  • 三重引用符で囲まれた__文字列はテンプレートをサポートします。 **

つまり、ドル記号で始まるシーケンスは、前のセクションで説明した方法で文字列に解決されます。エスケープ文字を機能させるためにこの事実を使用することができます。

val receipt = """Item 1: $1.00${"\n"}Item 2: $0.50"""

5.まとめ

この記事では、JavaにはないKotlin言語の1つの機能、つまり String テンプレートについて説明しました。通常の複数行の__Stringsの場合の使用方法を説明しました。

on GitHub に、ここに記載されているすべてのコードスニペットがあります。