非常に基本的な質問ですが、Kotlinで文字列を連結する正しい方法は何ですか?
Javaでは、このconcat()メソッドを使用します。
String a = "Hello ";
String b = a.concat("World"); // b = Hello World
concat()ただし、この機能はKotlinでは使用できません。+サインを使うべきですか?
回答:
Kotlinでは、文字列補間/テンプレートを使用して連結できます。
val a = "Hello"
val b = "World"
val c = "$a $b"
出力は次のようになります。 Hello World
StringBuilderします。これは、/が新しい文字列オブジェクトを作成するため、メモリの観点から最も効率的なアプローチです。+plus() または、StringBuilder明示的に使用して連結することもできます。
val a = "Hello"
val b = "World"
val sb = StringBuilder()
sb.append(a).append(b)
val c = sb.toString()
print(c)
出力は次のようになります。 HelloWorld
または、+/plus()演算子を使用して連結できます。
val a = "Hello"
val b = "World"
val c = a + b // same as calling operator function a.plus(b)
print(c)
出力は次のようになります。 HelloWorld
"Hello" + "Word"StringBuilderを使用して文字列に追加するのと同じくらいパフォーマンスが高いことを意味しますsomeHelloStringBuilder.append("World")か?
kotlin.String持っているplus方法を:
a.plus(b)
詳細については、https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/plus.htmlを参照してください。
+オペレータが正常で、翻訳された演算子関数を呼び出していないplus ...これは慣用的ではありません
a = a.plus(b)例えば
plus()、StringBuilder'sappendメソッドよりも実用的ではありません。
上記の受け入れられた答えに同意しますが、それは既知の文字列値にのみ適しています。動的な文字列値については、ここに私の提案があります。
// A list may come from an API JSON like
{
"names": [
"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
これは、文字列のリストを区切り文字で連結する場合に役立ちます。
はい、+記号を使用して連結できます。Kotlinには文字列テンプレートがあるため、次のように使用することをお勧めします。
var fn = "Hello"
var ln = "World"
"$fn $ln" 連結用。
String.plus()メソッドを使用することもできます。
+オペレータが正常で、翻訳された演算子関数を呼び出していないplus ...これは慣用的ではありません
@Rhusferの回答と同様に、私はこれを書きました。EditTextsのグループがあり、それらの値を連結する場合は、次のように記述できます。
listOf(edit_1, edit_2, edit_3, edit_4).joinToString(separator = "") { it.text.toString() }
連結する場合はMap、次を使用します。
map.entries.joinToString(separator = ", ")
連結するBundle、使用
bundle.keySet().joinToString(", ") { key -> "$key=${bundle[key]}" }
キーをアルファベット順に並べ替えます。
例:
val map: MutableMap<String, Any> = mutableMapOf("price" to 20.5)
map += "arrange" to 0
map += "title" to "Night cream"
println(map.entries.joinToString(separator = ", "))
// price=20.5, arrange=0, title=Night cream
val bundle = bundleOf("price" to 20.5)
bundle.putAll(bundleOf("arrange" to 0))
bundle.putAll(bundleOf("title" to "Night cream"))
val bundleString =
bundle.keySet().joinToString(", ") { key -> "$key=${bundle[key]}" }
println(bundleString)
// arrange=0, price=20.5, title=Night cream
kotlinの例で文字列を連結するさまざまな方法があります-
a = "Hello" , b= "World"
+演算子の使用
a+b
plus()演算子の使用
a.plus(b)
注-+は内部で.plus()メソッドにのみ変換されます
上記の2つのメソッドでは、文字列は不変であるため、新しい文字列オブジェクトが作成されます。既存の文字列を変更する場合は、StringBuilderを使用できます
StringBuilder str = StringBuilder("Hello").append("World")
a.plus(b)またはa + bを書き込むことができ、同じバイトコードが生成されます