Formatação de Strings em Kotlin: 5 Abordagens para Profissionais

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

A magia das strings: por que a formatação em Kotlin é uma arte

\n\n

Imagine: você está escrevendo um aplicativo para rastrear treinos esportivos. Precisa exibir uma mensagem: "Olá, Alexei! Seu tempo: 42,5 km em 2:15:07. Melhor resultado 3,2% melhor.". Se você montar essa string com concatenação (junção) no estilo Java — o código vira uma bagunça de sinais de mais e aspas. A formatação de strings em Kotlin resolve esse problema de forma elegante e poderosa.

\n\n

Neste artigo, vamos explorar 5 abordagens para Kotlin String formatting. Você aprenderá quando usar interpolação, quando usar o bom e velho String.format() e quando usar templates avançados. Vamos lá!

\n\n

1. Interpolação de strings: o pão com manteiga do Kotlin

\n\n

A técnica mais popular e simples é a interpolação de strings em Kotlin. Ela está embutida diretamente na linguagem: use o cifrão $ para inserir uma variável e ${} para expressões.

\n\n
val name = "Ana"\nval age = 28\nval message = "Meu nome é $name, tenho $age anos."\nprintln(message) // Meu nome é Ana, tenho 28 anos.\n\n// Expressões com chaves\nval price = 49.99\nval discount = 0.2\nval finalPrice = "Preço com desconto: ${price * (1 - discount)} reais."\nprintln(finalPrice) // Preço com desconto: 39.992 reais.
\n\n

Prós: legibilidade, velocidade, sem chamadas extras. Contras: sem controle de formato de números (por exemplo, número de casas decimais).

\n\n

Quando usar

\n
    \n
  • Mensagens simples, logs, textos de UI
  • \n
  • Quando não é necessário ajuste preciso de formato de números ou datas
  • \n
  • Dentro de println() ou StringBuilder
  • \n
\n\n

2. String.format(): o legado do Java no Kotlin

\n\n

Se você precisa de controle de formato — o String.format() em Kotlin vem ao resgate. Esta é uma ponte direta para o método Java String.format() com os mesmos especificadores (%s, %d, %.2f).

\n\n
val pi = 3.1415926535\nval formatted = String.format("Número π com três casas: %.3f", pi)\nprintln(formatted) // Número π com três casas: 3.142\n\n// Vários argumentos\nval name = "João"\nval score = 95\nval result = String.format("%s marcou %d pontos de 100", name, score)\nprintln(result) // João marcou 95 pontos de 100
\n\n

Uma nuance importante: a formatação de strings Kotlin String.format não é type-safe — se você passar o tipo errado, receberá uma exceção em tempo de execução. Para verificação estática, use métodos específicos do Kotlin (veja a seção 5).

\n\n

3. MessageFormat: quando você precisa de templates com placeholders

\n\n

Para templates complexos com argumentos repetidos ou localização — MessageFormat em Kotlin. Ele consegue escolher a forma da palavra (singular/plural) e formatar datas.

\n\n
import java.text.MessageFormat\n\nval pattern = "{0} tem {1} {0,choice,0#maçãs|1#maçã|2#maçãs}."\nval result = MessageFormat.format(pattern, "Pedro", 5)\nprintln(result) // Pedro tem 5 maçãs.\n\n// Com data\nval datePattern = "Hoje é {0,date,long}. Hora: {0,time,short}"\nval now = java.util.Date()\nprintln(MessageFormat.format(datePattern, now))
\n\n

Quando escolher: internacionalização (i18n), declinações complexas, templates com 5+ argumentos. Contra: sintaxe verbosa e dependência de java.text.

\n\n

4. Extensões Kotlin: concisão e type-safety

\n\n

A comunidade Kotlin adora extensões para formatação de strings. Você pode criar sua própria solução ou usar bibliotecas prontas (por exemplo, kotlinx.string).

\n\n
// Extensão simples\nfun String.format(vararg args: Any?): String {\n    return String.format(this, *args)\n}\n\n// Uso\nval template = "Olá, %s! Seu saldo: %.2f USD"\nval msg = template.format("Máximo", 1234.5678)\nprintln(msg) // Ol                

Blogs

Book Recommendations