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.
Top comments (0)