Tipos Básicos em Kotlin - String Literals
Renato O da Silva
Posted on September 14, 2024
Na última postagem eu comecei falar sobre strings e vamos dar continuidade falando de string literals.
Kotlin possui dois tipos de strings literals, Multiline Strings e Scaped Strings.
Multiline Strings
Diferente das strings convencionais, a multiline permite a adição de mais linhas dentro do texto. Se você tentar criar uma string com várias linhas, utilizando aspas duplas, isso irá gerar um erro.
fun main() {
val texto = "
Hoje é domingo
Pede cachimbo
O cachimbo é de barro
Bate no jarro
"
println(texto)
}
O código acima irá gerar vários erros conforme abaixo:
Syntax error: Expecting '"'.
Syntax error: Incorrect template entry: .
Unresolved reference 'Hoje'.
Unresolved reference 'domingo'.
Unresolved reference 'Pede'.
Unresolved reference 'O'.
Unresolved reference 'é'.
Unresolved reference 'barro'.
Unresolved reference 'Bate'.
Unresolved reference 'jarro'.
Syntax error: Expecting '"'.
Syntax error: Incorrect template entry: .
Então o que fazemos quando precisamos imprimir um texto com múltiplas linhas? Utilizamos multiline strings:
fun main() {
val texto = """
Hoje é domingo
Pede cachimbo
O cachimbo é de barro
Bate no jarro
"""
println(texto)
// Hoje é domingo
// Pede cachimbo
// O cachimbo é de barro
// Bate no jarro
}
Repare que o texto mesmo estando formatado, gerou uma saída toda bagunçada. Uma maneira de resolver isso é utilizando o método ** trimMargin()** que pode ser utilizado para remover espaços em brancos quando estamos utilizando multiline strings:
fun main() {
val texto = """
|Hoje é domingo
|Pede cachimbo
|O cachimbo é de barro
|Bate no jarro
""".trimMargin()
println(texto)
// Hoje é domingo
// Pede cachimbo
// O cachimbo é de barro
// Bate no jarro
}
O Kotlin por padrão usa o símbolo "|" como prefixo para margem, mas podemos utilizar outro símbolo, apenas devemos indicar isso no método trimMargin():
fun main() {
val texto = """
?Hoje é domingo
?Pede cachimbo
?O cachimbo é de barro
?Bate no jarro
""".trimMargin("?")
println(texto)
// Aqui utilizamos a ? como prefixo, podendo ser outro caractere
// Hoje é domingo
// Pede cachimbo
// O cachimbo é de barro
// Bate no jarro
}
Escaped Strings
Escaped strings podem conter caracteres escapados. Abaixo temos um exemplo:
fun main() {
val saudacao = "Ola\nJosé"
println(saudacao)
// Ola
// José
}
Para utilizar escape, usamos o caractere *. Repare que a string está em uma linha só, mas na hora de imprimir na tela, foi impresso em duas linhas. O caractere *\n serve para pular uma linha e o mesmo não é impresso visualmente.
Temos uma lista de caracteres que podem ser escapados, conforme abaixo:
- \t – tabulação
- \b – backspace (não gostei dessa tradução, por isso deixei sem tradução)
- \n – nova linha
- \r – enter
- \' – aspas simples
- \" – aspas duplas
- \ – barra inversa
- \$ – Sinal de Dólar
fun main() {
println("\tAqui temos uma tab")
// Aqui temos uma tab
println("\bAqui temos um backspace")
//Aqui temos um backspace
println("Aqui imprime uma nova linha\n")
// Aqui imprime uma nova linha
//
println("Aqui imprime um enter\r")
// Aqui imprime um enter
println('\'')
// '
println("\"")
// "
println("Aqui imprime a barra inversa \\")
// Aqui imprime a barra inversa \
println("Aqui imprime o sinal de dólar \$")
// Aqui imprime o sinal de dólar $
}
Vou ficando por aqui, em breve continuaremos com as strings.
Posted on September 14, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.