JavaScript: Strings em JavaScript

Última atualização: 2026-10-13

Strings são um dos tipos de dados mais usados em JavaScript. Nove em cada dez linhas de código que você escreve envolvem strings — exibir texto, construir mensagens, processar entrada do usuário — nada disso funciona sem elas.

Métodos de string:toLowerCase() toUpperCase() startsWith() includes() replaceAll endsWith() indexOf() replace() slice() split() trim()

1. Criando Strings

JavaScript oferece três maneiras de criar strings: aspas simples, aspas duplas e crases.

HTML
<script>
let a = 'olá';        // Aspas simples
let b = "mundo";      // Aspas duplas
let c = `olá`;        // Crases
</script>

Aspas simples e aspas duplas são funcionalmente idênticas — escolha a que preferir. Crases, no entanto, são diferentes: suportam template literals, que são muito mais poderosas. Mais sobre isso abaixo.

💡 Dica: Em projetos de equipe, mantenha um estilo de aspas (simples ou duplas) em toda a base de código para consistência.


Esta é uma armadilha que muitos desenvolvedores encontram: uma vez que uma string é criada, seu conteúdo não pode ser alterado. Todo método que você chama retorna uma nova string sem modificar a original.

HTML
<script>
let str = 'olá';
str[0] = 'O';       // Falha silenciosamente — str ainda é 'olá'
str.toUpperCase();   // Retorna 'OLÁ', mas str em si não é alterada
let upper = str.toUpperCase(); // Correto — capture o valor de retorno em uma variável
</script>

Lembre-se: métodos de string nunca modificam a original. Você deve atribuir o valor de retorno a uma nova variável.


3. Métodos Comuns

JavaScript tem muitos métodos de string, mas estes são os que você usará diariamente:

Método Propósito Exemplo
length Obter comprimento 'abc'.length → 3
indexOf() Encontrar posição de substring 'olá'.indexOf('lá') → 1
slice() Extrair substring 'olá'.slice(1,3) → 'lá'
replace() Substituir conteúdo 'gato'.replace('g','p') → 'pato'
toUpperCase() Converter para maiúsculas 'oi'.toUpperCase() → 'OI'
toLowerCase() Converter para minúsculas 'OI'.toLowerCase() → 'oi'
trim() Remover espaços extras ' oi '.trim() → 'oi'
split() Dividir em array por delimitador 'a,b'.split(',') → ['a','b']
includes() Verificar se substring existe 'olá'.includes('lá') → true
startsWith() Verificar se string começa com 'olá'.startsWith('ol') → true
endsWith() Verificar se string termina com 'olá'.endsWith('lá') → true

▶ Exemplo: Métodos Comuns de String

▶ Experimente

Note que slice(início, fim) extrai do início até mas não incluindo o fim. Isso é consistente com a maioria das linguagens — você vai se acostumar.


4. Template Literals

Strings criadas com crases (`) são chamadas de template literals. Elas têm dois recursos incríveis:

  1. Suporte a múltiplas linhas — sem precisar de \n; basta pressionar Enter
  2. Interpolação — incorpore variáveis ou expressões com ${variável}
HTML
<!DOCTYPE html>
<html lang="pt-br">
<head><meta charset="UTF-8"><title>Template Literals</title></head>
<body>
<div id="output"></div>
<script>
let nome = 'Alice';
let idade = 20;

// Jeito antigo: concatenação, fácil de esquecer um sinal de mais
let msg1 = 'Meu nome é ' + nome + ', eu tenho ' + idade + ' anos.';

// Jeito novo: template literals, muito mais limpo
let msg2 = `Meu nome é ${nome}, eu tenho ${idade} anos.`;

document.getElementById('output').innerHTML =
  '<strong>Concatenação:</strong>' + msg1 + '<br>' +
  '<strong>Template literal:</strong>' + msg2;
</script>
</body>
</html>

▶ Exemplo: Template Literals vs Concatenação

▶ Experimente
💡 Dica: Quando você tem muitas variáveis, template literals são dez vezes mais legíveis que concatenação. Não hesite — prefira crases no seu código diário.


5. Caracteres de Escape

Alguns caracteres têm significado especial dentro de strings. Para exibi-los literalmente, use uma barra invertida \ para escapar:

Caractere de Escape Significado
\n Nova linha
\t Tabulação
\\ A própria barra invertida
\" Aspa dupla
\' Aspa simples

▶ Exemplo: Caracteres de Escape

▶ Experimente
⚠️ Nota: A própria barra invertida deve ser escapada. Ao escrever caminhos do Windows como C:\Users, você precisa de C:\\Users — esquecer de escapar é uma fonte comum de bugs.


6. Concatenação de String vs Template Literals

Ambas as abordagens funcionam para casos simples, mas a concatenação rapidamente se torna dolorosa à medida que o número de variáveis cresce:

HTML
<script>
// Concatenação: fácil de esquecer ou duplicar sinais de mais
let html = '<div class="' + cls + '">' + titulo + '</div>';

// Template literal: claro à primeira vista
let html = `<div class="${cls}">${titulo}</div>`;
</script>

▶ Exemplo: Gerando Conteúdo HTML

▶ Experimente

Usar template literals dentro de loops para gerar HTML é extremamente comum no desenvolvimento real e muito mais agradável que concatenação.


Métodos de string:toLowerCase() toUpperCase() startsWith() includes() replaceAll endsWith() indexOf() replace() slice() split() trim()

❓ Perguntas Frequentes

P Qual a diferença entre indexOf e includes?
R indexOf retorna a posição inicial da substring (ou -1 se não encontrada), enquanto includes retorna um booleano. Se você só se importa se uma substring existe, includes é mais intuitivo; se precisa da posição exata, use indexOf.
P Por que replace só substitui a primeira ocorrência?
R replace só substitui a primeira ocorrência por padrão. Para substituir todas, use replaceAll, ou use uma expressão regular com a flag g: str.replace(/abc/g, 'xyz').
P Qual devo usar — aspas simples ou aspas duplas?
R São funcionalmente idênticas. Apenas seja consistente dentro da sua equipe. A maioria dos projetos usa aspas simples por padrão e muda para aspas duplas quando a string em si contém aspas simples.

📖 Resumo


📝 Exercícios

  1. Escreva um programa que recebe uma frase como entrada e exibe a contagem de palavras (dica: use split por espaços, depois length).
  2. Escreva um programa que transforma a string " Olá Mundo " em "olá mundo" totalmente em minúsculas e sem espaços, usando trim e toLowerCase.
  3. Use um template literal para gerar um trecho HTML de auto-apresentação contendo seu nome, idade e hobbies (usando variáveis), e exiba na página.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%