매우 기본적인 질문입니다. 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
또는 +
/ 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
"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
의 append 메소드 보다 실용적이지 않은 경우에 종속됩니다 .
예, +
기호를 사용하여 연결할 수 있습니다 . Kotlin에는 문자열 템플릿이 있으므로 다음과 같이 사용하는 것이 좋습니다.
var fn = "Hello"
var ln = "World"
"$fn $ln"
연결을 위해.
String.plus()
방법을 사용할 수도 있습니다 .
+
운영자가 정상입니다, 번역 된 연산자 함수를 호출하지 plus
...이 관용적하지 않습니다
위의 대답에 동의하지만 알려진 문자열 값에만 좋습니다. 여기에 동적 문자열 값에 대한 제안이 있습니다.
// 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
이것은 구분 기호로 문자열 목록을 연결하는 데 유용합니다.
@Rhusfer 대답 과 비슷하게 내가 이것을 썼습니다. 그룹이 EditText
있고 값을 연결하려는 경우 다음 과 같이 작성할 수 있습니다.
listOf(edit_1, edit_2, edit_3, edit_4).joinToString(separator = "") { it.text.toString() }
을 연결 HashMap
하려면 다음을 사용하십시오.
map.entries.joinToString(separator = ", ")
// Result:
// id=123, name=John, surname=Smith
이것을 시도해보십시오. Kotlin에서 문자열을 연결하는 기본 방법이라고 생각합니다.
val result = buildString{
append("a")
append("b")
}
println(result)
// you will see "ab" in console.
buildString {
대신stringBuild {
yourString + = "newString"
이렇게하면 문자열을 연결할 수 있습니다.
a.plus(b)
또는 쓸 수 있고a + b
동일한 바이트 코드가 생성됩니다