JavascriptStrings e Template Literals

Strings e Template Literals

Strings e Template Literals em JavaScript

Fala, dev! Vamos mergulhar no mundo das strings em JavaScript. As strings são sequências de caracteres que usamos para representar texto. Elas são fundamentais em qualquer programa, então bora dominar isso!

Aspas Simples, Duplas e Backticks

No JavaScript, você tem três jeitos de criar strings:

// Aspas simples
let nome = 'João';

// Aspas duplas
let sobrenome = "Silva";

// Backticks (template strings)
let completo = `João Silva`;

Qual usar? Não tem regra fixa. Escolha uma e seja consistente. Mas tem uma dica importante:

// Quando sua string tem aspas simples, use duplas
let frase1 = "Ela disse: 'Olá!'";

// Quando tem aspas duplas, use simples
let frase2 = 'Ele respondeu: "Oi!"';

// Backticks salvam quando você precisa de ambos
let frase3 = `Ela disse: "Olá!" e ele respondeu: 'Oi!'`;

Template Literals com $

Aqui mora a mágica! Template literals (com backticks) permitem interpolar variáveis e expressões:

let nome = "Maria";
let idade = 25;

// Sem template literal (concatenação antiga)
let mensagem1 = "Olá, " + nome + "! Você tem " + idade + " anos.";

// Com template literal
let mensagem2 = `Olá, ${nome}! Você tem ${idade} anos.`;

console.log(mensagem1);
console.log(mensagem2);

Dentro de ${} você pode colocar qualquer expressão JavaScript:

let a = 10;
let b = 5;

console.log(`A soma de ${a} e ${b} é ${a + b}`);
console.log(`O dobro de ${a} é ${a * 2}`);
console.log(`É maior? ${a > b ? 'Sim' : 'Não'}`);

Métodos Úteis de String

Vamos explorar os métodos mais usados. Pega aí!

length - Tamanho da string

let texto = "JavaScript";
console.log(texto.length); // 10

toUpperCase e toLowerCase - Maiúsculo e minúsculo

let nome = "João Silva";
console.log(nome.toUpperCase()); // "JOÃO SILVA"
console.log(nome.toLowerCase()); // "joão silva"

trim - Remove espaços das pontas

let email = "   usuario@email.com   ";
console.log(email.trim()); // "usuario@email.com"

includes - Verifica se contém

let frase = "Aprendendo JavaScript é divertido";
console.log(frase.includes("JavaScript")); // true
console.log(frase.includes("Python")); // false

startsWith e endsWith - Começa/Termina com

let url = "https://exemplo.com";
console.log(url.startsWith("https")); // true
console.log(url.endsWith(".com")); // true

slice - Corta a string

let texto = "JavaScript";
console.log(texto.slice(0, 4)); // "Java"
console.log(texto.slice(4)); // "Script"
console.log(texto.slice(-6)); // "Script"

split - Divide em array

let dados = "João,25,São Paulo";
let partes = dados.split(",");
console.log(partes); // ["João", "25", "São Paulo"]

replace - Substitui texto

let frase = "Eu gosto de gatos";
console.log(frase.replace("gatos", "cachorros")); // "Eu gosto de cachorros"

indexOf - Encontra posição

let texto = "JavaScript é legal";
console.log(texto.indexOf("legal")); // 13
console.log(texto.indexOf("Python")); // -1 (não encontrou)

Concatenação: + vs Template Literal

A forma antiga de juntar strings:

let nome = "Ana";
let idade = 30;
let cidade = "Rio";

// Concatenação com +
let apresentacao = "Olá, eu sou " + nome + ", tenho " + idade + " anos e moro no " + cidade + ".";

A forma moderna (e muito melhor):

let apresentacao = `Olá, eu sou ${nome}, tenho ${idade} anos e moro no ${cidade}.`;

Vantagens do template literal:

  • Mais legível
  • Menos chance de erro
  • Permite expressões complexas
  • Suporta múltiplas linhas

Exemplo Prático Completo

Vamos criar um validador de email simples:

function validarEmail(email) {
  email = email.trim().toLowerCase();
  
  if (!email.includes('@')) {
    return 'Email inválido: falta o @';
  }
  
  if (!email.endsWith('.com') && !email.endsWith('.br')) {
    return 'Email inválido: domínio não reconhecido';
  }
  
  let partes = email.split('@');
  let usuario = partes[0];
  let dominio = partes[1];
  
  return `Email válido! Usuário: ${usuario}, Domínio: ${dominio}`;
}

console.log(validarEmail("  Joao@Email.com  "));
// "Email válido! Usuário: Joao, Domínio: Email.com"

Erros Comuns

1. Esquecer de fechar a string

let texto = "Olá mundo; // ❌ Erro!
let texto = "Olá mundo"; // ✅ Correto

2. Confundir número com string

let numero = "5";
console.log(numero + 3); // "53" (concatena, não soma)
console.log(Number(numero) + 3); // 8 (soma correta)

3. Usar + em vez de $ em template literals

let nome = "João";
console.log(`Olá ${nome}!`); // ✅ Correto
console.log(`Olá + nome + !`); // ❌ Errado (vai mostrar literalmente)

4. Não tratar espaços extras

let email = " usuario@email.com ";
if (email === "usuario@email.com") {
  console.log("Igual"); // Nunca vai executar!
}

// Solução: use trim()
if (email.trim() === "usuario@email.com") {
  console.log("Igual"); // ✅ Agora funciona
}

Dicas Finais

  1. Prefira template literals para strings com variáveis
  2. Use trim() antes de comparar strings de formulários
  3. Métodos de string não modificam a original, sempre retornam uma nova
  4. String é imutável em JavaScript - qualquer operação cria uma nova string
let texto = "Olá";
texto.toUpperCase(); // Isso não modifica 'texto'
console.log(texto); // "Olá"

// Correto: atribua o resultado
let textoMaiusculo = texto.toUpperCase();
console.log(textoMaiusculo); // "OLÁ"

Agora você já domina strings em JavaScript! Pratique esses conceitos, use template literals sempre que possível, e lembre-se: strings são seus amigos, não inimigos. Bons códigos! 🚀