Concatenate Strings em Kotlin … Nos bastidores
Kotlin está se tornando a linguagem mais admirável para programadores devido à simplicidade do código, ajuda a evitar NullPointerException mais renomado, um clique em Java → conversor de código Kotlin, interoperabilidade, classes de dados e muito mais. Ele se tornou famoso em 2016, quando o Google Developers lançou oficialmente o Kotlin para o desenvolvimento do Android.
Neste breve tópico, cobriremos algumas das melhores implementações de concatenação em strings e também revelaremos qual método é melhor. Então, vamos começar a identificar a resposta a esta pergunta.
Conteudo
‘+’ Operator:
Se pudermos olhar para trás, em nossos velhos tempos de programação, geralmente usamos o operador + para fazer a concatenação. Portanto, o cenário é o mesmo aqui.
val firstName = "Oi" val lastName = "Sim" val result = firstName + lastName println(result) // Oi Sim
Neste método, a string resultante contém dois objetos de uma string, um está no lado direito do operador e o outro está no lado esquerdo.
Método plus():
De acordo com a fonte oficial: os operadores plus (+
) e minus (-
) são definidos para coleções. Eles consideram uma coleção como o primeiro operando; o segundo operando pode ser um elemento ou outra coleção.
operator fun plus(other: Any?): String
Na concatenação, o método plus () combina a sequência de inicialização com outro literal que pode ser de qualquer tipo e retornar um novo objeto de sequência. Está funcionando como um trabalho de sobrecarga do operador.
val firstName = "Oi" val lastName = "Sim" // 01 - Exemplo val result01 = firstName.plus(lastName) println(result01) // Oi Sim // 02 - Exemplo val result02 = "Meu Nome é ".plus(result01) println(result02) // Meu Nome é Oi Sim // 03 - Exemplo val result03 = result02.plus("Registro-").plus(1000) println(result03) // Meu Nome é Oi Sim Registro-1000 // 04 - Exemplo val result04 = "Ana é ".plus(10.div(2)) println(result04) // Ana é 5
Mais importante ainda, se o objeto passado não for uma string, ele usará a representação da string desse objeto.
Template String:
O outro recurso mais poderoso que o kotlin oferece é um modelo String. Neste método, a string literal contém outra expressão que pode ser de qualquer tipo de dados, como o método plus () do. Você também pode definir a lógica em um modelo de string.
val firstName = "Oi" val lastName = "Sim" // 01 - Exemplo val result01 = "$firstName $lastName" println(result01) // Oi Sim // 02 - Exemplo val result02 = "Meu Nome é $firstName $lastName Registro-$(1000)" println(result02) // Meu Nome é Oi Sim Registro-1000 // 03 - Exemplo val result03 = ${if(firstName === "Oi") 1001 else 0} println(result03) // 1000
O modelo de string segue o processo de interpolação de string.
StringBuilder:
Desde o JDK 1.5 até o estágio atual, nós nos entregamos principalmente ao StringBuilder por causa de sua funcionalidade para criar strings mutáveis (modificáveis) e não sincronizadas.
Agora, Kotlin fornece StringBuilder com os mesmos recursos que tinha em java. Se fizermos uma comparação entre os diferentes métodos de concatenação como plus () ou + Operator que cria uma string imutável enquanto StringBuilder cria uma string mutável.
val firstName = "Oi" val lastName = "Sim" // 01 - Exemplo val result01 = StringBuilder(firstName).append(" ").append(lastName) println(result01) // Oi Sim // 02 - Exemplo val result02 = StringBuilder("Meu Nome é ").append(firstName).append(" ").append(lastName).append("Registro-").append(1000) println(result02) // Meu Nome é Oi Sim Registro-1000
StringBuilder usa o método append() para concatenar. A string concatenada seria um tipo ou combinação de vários tipos. É eficiente concatenar um grande número de strings.
Método joinToString
Outro método Kotlin poderoso usado para coleções e matrizes. O método pode converter qualquer tipo de lista em uma string usando o separador e o prefix e o postfix fornecidos, se fornecido.
val number = listOf(1,2,3,4,5,6) // 01 - Exemplo println(number.jointToString()) // 1,2,3,4,5,6 // 02 - Exemplo println(number.joinToString(prefix = "[", postfix = "]")) // [1,2,3,4,5,6] // 03 - Exemplo println(number.joinToString(prefix = "<", postfix = ">", separator = ".")) // <1.2.3.4.5.6>
Se a coleção fornecida for muito grande, você pode especificar um valor não negativo de limite, caso em que apenas os primeiros elementos de limite serão considerados, seguidos pela string truncada (cujo padrão é “…”).
val chars = charArrayOf('a','b','c','d','e', 'f', 'g', 'h', 'j', 'l', 'm', 'n') println(chars.joinToString(limit = 5, truncated = "...!") {it.toUpperCase().toString()} ) // A, B, C, D, E, ...!
Muito obrigado ao compilador online Kotlin que me ajudou muito enquanto escrevo este artigo para executar o código facilmente antes de colá-lo aqui
Espero que este artigo tenha sido útil para cobrir as questões básicas sobre a concatenação de strings e explorar os benefícios por trás dela.