Kotlin文字列テンプレート
1. 概要
このチュートリアルでは、KotlinのStringテンプレートとは何か、およびそれらの使用方法について説明します。
他の機能に慣れ、Kotlinの使用方法を知るために、Kotlin tutorialsの1つを見てください。
2. コトリンの弦
Javaと同様に、KotlinのStringsは不変です。 つまり、作成されたStringを変更する手段がないということです。 ただし、特定のStringから別のStringを導出する場合があります。
Kotlinは、JavaStringクラスを追加機能で強化しました。
たとえば、メソッドpadEnd()を使用すると、String,を次のようにフォーマットできます。
"Hello".padEnd(10, '!')
これにより、新しい文字列“Hello!!!!!”が生成されます。
3. 文字列テンプレート
文字列テンプレートは、埋め込み式を含むStringリテラルです。
たとえば、Javaの次のコード:
String message = "n = " + n;
Kotlinには次のようなものがあります。
val message = "n = $n"
有効なKotlin式は、Stringテンプレートで使用できます。
val message = "n + 1 = ${n + 1}"
Unlike Java, many Kotlin’s constructs (but certainly, not all) are expressions。
したがって、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 ead.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()メソッドを使用して、すべての行の先頭からマージンプレフィックスが最初に出現するまでの最終的な空白を削除します(上記の例では>)。
Triple-quoted strings don’t support any escape sequences。 書いたら
val receipt = """Item 1: $1.00\nItem 2: $0.50"""
2行のString,を取得するには、予想される改行の代わりに、文字 を含む1行を取得します。
ただし、三重引用符で囲まれたStringsはテンプレートをサポートします。
これは、ドル記号で始まるシーケンスが、前のセクションで説明した方法で文字列に解決されることを意味します。 エスケープ文字を機能させるために、この事実を使用できます。
val receipt = """Item 1: $1.00${"\n"}Item 2: $0.50"""
5. 結論
この記事では、JavaにはないKotlin言語の1つの機能であるStringテンプレートについて検討しました。 通常の複数行のStrings.の場合の使用法を示しました
ここに記載されているすべてのコードスニペットは、リポジトリon GitHubにあります。