DEV Community

Cover image for Tipos Básicos em Kotlin - String Literals
Renato O da Silva
Renato O da Silva

Posted on

Tipos Básicos em Kotlin - String Literals

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)
}
Enter fullscreen mode Exit fullscreen mode

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: .
Enter fullscreen mode Exit fullscreen mode

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
}
Enter fullscreen mode Exit fullscreen mode

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
}
Enter fullscreen mode Exit fullscreen mode

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
}
Enter fullscreen mode Exit fullscreen mode

Escaped Strings

Escaped strings podem conter caracteres escapados. Abaixo temos um exemplo:

fun main() {
    val saudacao = "Ola\nJosé"

    println(saudacao)
    // Ola
    // José
}
Enter fullscreen mode Exit fullscreen mode

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 $
}
Enter fullscreen mode Exit fullscreen mode

Vou ficando por aqui, em breve continuaremos com as strings.

Sentry mobile image

Improving mobile performance, from slow screens to app start time

Based on our experience working with thousands of mobile developer teams, we developed a mobile monitoring maturity curve.

Read more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay