Конкатенация строк в Котлине

Конкатенация строк в Котлине

1. Вступление

В этом коротком руководстве мы исследуем различные способы объединения строк в Kotlin.

2. Использование методаplus()

Класс KotlinString содержит методplus():

operator fun plus(other: Any?): String (source)

It returns a String obtained by concatenating reference String with the String passed as an argument.

Например:

@Test
fun givenTwoStrings_concatenateWithPlusMethod_thenEquals() {
    val a = "Hello"
    val b = "example"
    val c = a.plus(" ").plus(b)

    assertEquals("Hello example", c)
}

Также важно понимать, что если переданный объект неString, будет использоваться представление объектаString.

3. Использование оператора+

Самый простой способ объединенияStrings в Kotlin - использовать оператор+. В результате получаемnew String object composed of Strings on the left and the right side of the operator:

@Test
fun givenTwoStrings_concatenateWithPlusOperator_thenEquals() {
    val a = "Hello"
    val b = "example"
    val c = a + " " + b

    assertEquals("Hello example", c)
}

Другой ключевой момент заключается в том, что в Kotlin, благодаряoperator overload, оператор + преобразуется в методplus().

В общем, это обычный метод объединения небольших чиселStrings.

4. ИспользуяStringBuilder

Как мы знаем, объектыString неизменяемы. При каждой конкатенации с использованием оператора+ или методаplus() мы получаем новый объектString. Напротив, чтобы избежать ненужного создания объектаString, мы можем использоватьStringBuilder.

Следовательно,StringBuilder creates a single internal buffer that contains the final string.

Следовательно,StringBuilder более эффективен при объединении большого количества строк.

Вот пример конкатенацииString с использованиемStringBuilder:

@Test
fun givenTwoStrings_concatenateWithStringBuilder_thenEquals() {
    val builder = StringBuilder()
    builder.append("Hello")
           .append(" ")
           .append("example")

    assertEquals("Hello example", builder.toString())
}

Наконец, мы можем использоватьStringBuffer для поточно-ориентированной конкатенации вместоStringBuilder.

5. Использование строковых шаблонов

Kotlin также имеет функцию под названием шаблоныString. String templates contain expressions that get evaluated to build a String.

Выражения шаблонаString начинаются со знака доллара, за которым следует имя переменной.

Вот пример конкатенацииString с использованием шаблонов:

@Test
fun givenTwoStrings_concatenateWithTemplates_thenEquals() {
    val a = "Hello"
    val b = "example"
    val c = "$a $b"

    assertEquals("Hello example", c)
}

Компилятор Kotlin переводит этот код в:

new StringBuilder().append(a).append(" ").append(b).toString()

Наконец, этот процессString interpolation.

6. Заключение

В этой статье мы узнали несколько способов объединения объектовString в Kotlin.

Как всегда, весь код, представленный в этом руководстве, можно найтиover on GitHub.