web-dev-qa-db-ja.com

Kotlin - 文字列を正しく連結する方法

非常に基本的な質問、Kotlinで文字列を連結する正しい方法は何ですか?

Javaではconcat()メソッドを使います。

String a = "Hello ";
String b = a.concat("World"); // b = Hello World

concat()関数はKotlinでは利用できません。 +記号を使うべきですか?

62
Daniele

Kotlinでは、 文字列補間/テンプレート を使用して連結できます。

val a = "Hello"
val b = "World"
val c = "$a $b"

出力は次のようになります。Hello World

あるいは+/ plus() 演算子を使って連結することもできます。

val a = "Hello"
val b = "World"
val c = a + b   // same as calling operator function a.plus(b)

print(c)

出力は次のようになります。HelloWorld

あるいは StringBuilder を使って連結することもできます。

val a = "Hello"
val b = "World"

val sb = StringBuilder()
sb.append(a).append(b)
val c = sb.toString()

print(c)

出力は次のようになります。HelloWorld

101
Avijit Karmakar

kotlin.Stringにはplusメソッドがあります。

a.plus(b)

詳しくは https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/plus.html を参照してください。

11
Harald

私は上記の受け入れられた答えに同意しますが、それは既知の文字列値に対してのみ有効です。動的な文字列値については、これが私の提案です。

// A list may come from an API JSON like
{
   "persons": {
      "Person 1",
      "Person 2",
      "Person 3",
         ...
      "Person N"
   }
}
var listOfNames = mutableListOf<String>() 

val stringOfNames = listOfNames.joinToString(", ") 
// ", " <- a separator for the strings, could be any string that you want

// Posible result
// Person 1, Person 2, Person 3, ..., Person N

これは、文字列のリストを区切り文字で連結するのに便利です。

6
Rhusfer

はい、+記号を使って連結することができます。 Kotlinには文字列テンプレートがあるので、それらを次のように使うのが良いです。

var fn = "Hello"
var ln = "World"

連結の場合は"$fn $ln"

String.plus()メソッドを使うこともできます。

6
Tushar

私はこれを@Rhusfer回答と同様に書きました。 EditTextsのグループがあり、それらの値を連結したい場合は、次のように書くことができます。

listOf(edit_1, edit_2, edit_3, edit_4).joinToString(separator = "") { it.text.toString() }
2
CoolMind

Kotlinで文字列を連結するための様々な方法があります例 -

a = "Hello" , b= "World"
  1. +演算子a+bを使う

  2. plus()演算子を使う

    a.plus(b)

注 - +は内部的に.plus()メソッドのみに変換されます

上記の2つのメソッドでは、文字列は不変であるため、新しい文字列オブジェクトが作成されます。既存の文字列を修正したい場合は、StringBuilderを使用できます。

StringBuilder str = StringBuilder("Hello").append("World")
1