W3docs

Strings em JavaScript

Em JavaScript, as strings são usadas para armazenar e manipular texto. Aprenda a criar strings, utilizá-las e realizar comparações.

Em JavaScript, as strings são usadas para armazenar e manipular texto. Ao contrário de algumas outras linguagens, JavaScript não possui um tipo separado para um único caractere — um caractere é simplesmente uma string de comprimento 1. O formato interno de toda string é sempre UTF-16, e é por isso que cada caractere corresponde a um código numérico (mais detalhes abaixo).

Uma string representa zero ou mais caracteres escritos entre aspas. As strings são um dos tipos de dados primitivos do JavaScript, mas expõem muitos métodos úteis — veja métodos de primitivos para entender por que um primitivo pode ter métodos.

Nesta página você aprenderá como criar strings (com aspas simples, aspas duplas e backticks), usar caracteres especiais, ler o comprimento de uma string, acessar caracteres individuais, extrair substrings, alterar maiúsculas/minúsculas, pesquisar dentro de uma string e comparar strings corretamente.

Funções de String Populares

FunçãoDescrição
charAt(index)Retorna o caractere no índice especificado.
charCodeAt(index)Retorna o valor Unicode do caractere no índice especificado.
concat(...strings)Concatena os argumentos string à string chamadora e retorna uma nova string.
includes(searchString, position)Determina se a string chamadora contém a searchString.
indexOf(searchValue, fromIndex)Retorna o índice da primeira ocorrência de searchValue na string, iniciando a busca em fromIndex. Retorna -1 se o valor não for encontrado.
lastIndexOf(searchValue, fromIndex)Retorna o índice da última ocorrência de searchValue na string chamadora, buscando de trás para frente a partir de fromIndex. Retorna -1 se o valor não for encontrado.
match(regexp)Recupera as correspondências ao comparar uma string com uma expressão regular.
matchAll(regexp)Retorna um iterador de todos os resultados que correspondem a uma string com uma expressão regular, incluindo grupos de captura.
repeat(count)Retorna uma nova string composta pela string chamadora repetida count vezes.
replace(searchFor, replaceWith)Substitui a primeira correspondência de uma substring ou padrão por uma string de substituição.
replaceAll(searchFor, replaceWith)Substitui todas as correspondências de uma substring ou padrão por uma string de substituição.
search(regexp)Pesquisa na string por uma correspondência com uma expressão regular e retorna o índice da correspondência.
slice(startIndex, endIndex)Extrai uma seção de uma string e a retorna como uma nova string, sem modificar a string original.
split(separator, limit)Divide uma string em uma lista ordenada de substrings, coloca essas substrings em um array e retorna o array. A divisão é feita buscando um padrão fornecido como primeiro parâmetro na chamada do método.
startsWith(searchString, position)Determina se a string chamadora começa com os caracteres de searchString.
substring(startIndex, endIndex)Retorna a parte da string entre os índices de início e fim, ou até o final da string.
toLowerCase()Retorna o valor da string chamadora convertido para minúsculas.
toUpperCase()Retorna o valor da string chamadora convertido para maiúsculas.
trim()Remove espaços em branco de ambas as extremidades da string.
trimStart() ou trimLeft()Remove espaços em branco do início da string.
trimEnd() ou trimRight()Remove espaços em branco do final da string.
valueOf()Retorna o valor primitivo de um objeto String.

Sobre as Aspas

JavaScript oferece três maneiras de delimitar uma string: aspas simples, aspas duplas e backticks:

let single = 'single-quoted';
let double = "double-quoted";
let backticks = `backticks`;

Aspas simples e duplas se comportam de forma idêntica — escolha um estilo e mantenha-o consistente. Os backticks são diferentes: eles suportam template literals, permitindo que você incorpore qualquer expressão diretamente na string, envolvendo-a em ${…}:

javascript— editable

A expressão dentro de ${…} pode ser qualquer coisa — uma variável, um cálculo ou uma chamada de função:

javascript— editable

Outra grande vantagem dos backticks é que eles permitem que uma string ocupe várias linhas:

javascript— editable

Aspas simples e duplas não podem abranger várias linhas por conta própria. Inserir uma quebra de linha literal dentro delas é um erro de sintaxe:

let guestList = "Guests: // SyntaxError: Invalid or unexpected token
* John ";

As aspas simples e duplas são anteriores aos backticks, portanto os backticks são a opção mais moderna e poderosa.

Você também pode colocar uma "função de template" (um tagged template) antes do primeiro backtick:

func`string`;

A função func é chamada automaticamente e recebe as partes literais da string junto com as expressões incorporadas, permitindo processá-las. É assim que as bibliotecas implementam templates personalizados, mas no código do dia a dia raramente é necessário.

Caracteres Especiais

Você pode criar saída multilinha a partir de strings com aspas simples ou duplas usando \n (o caractere de nova linha), assim:

javascript— editable

Existem outros caracteres especiais menos comuns.

Veja alguns deles na lista abaixo:

  • \', \" esses caracteres especiais são usados para aspas
  • \r - retorno de carro. Este caractere é usado sozinho agora. Uma combinação de dois caracteres \r\n é usada para representar uma quebra de linha em arquivos de texto do Windows.
  • \\ - barra invertida
  • \t - tabulação
  • \xXX - caractere unicode com um hexadecimal unicode específico XX
  • \uXXXX - este é o símbolo unicode com o código hex XXXX na codificação UTF-16. Deve incluir exatamente 4 dígitos.

Aqui estão exemplos com escapes Unicode:

javascript— editable

Todo caractere especial começa com uma barra invertida, razão pela qual a barra invertida também é chamada de caractere de escape. Você pode usá-la para inserir uma aspa correspondente dentro de uma string:

javascript— editable

A barra invertida existe apenas para dizer ao JavaScript como ler o código-fonte — ela desaparece depois que a string é criada, portanto não é armazenada na memória. Quando você realmente precisa de uma barra invertida na string, duplique-a:

javascript— editable

O Comprimento da String

A propriedade length fornece o número de caracteres em uma string:

javascript— editable

Observe que \n é um único caractere especial, então o comprimento é 7 (W3Docs mais uma nova linha), não 8.

Um erro comum é chamar str.length() em vez de ler str.length. length é uma propriedade, não um método — adicionar () lança um erro "not a function".

Acessando Caracteres

Os colchetes [pos] são a forma usual de obter o caractere em uma determinada posição. Você também pode chamar o método str.charAt(pos). As posições são baseadas em zero, portanto o primeiro caractere está no índice 0:

javascript— editable

A única diferença: se não existir caractere na posição, str[pos] retorna undefined enquanto str.charAt(pos) retorna uma string vazia ''. O código moderno geralmente prefere os colchetes; charAt raramente é usado hoje em dia.

Strings São Imutáveis

As strings em JavaScript são imutáveis — você não pode alterar um caractere no lugar. A atribuição abaixo falha silenciosamente (no modo estrito ela lança uma exceção), então o caractere original permanece inalterado:

javascript— editable

Em vez disso, construa uma string completamente nova e atribua-a de volta à variável:

javascript— editable

Alteração de Maiúsculas/Minúsculas

Dois métodos alteram as maiúsculas/minúsculas de uma string inteira — toUpperCase() e toLowerCase():

javascript— editable

Para converter apenas um único caractere para minúscula, primeiro acesse a posição na string e depois chame o método nesse caractere:

javascript— editable

Procurando uma Substring

Existem várias maneiras de pesquisar uma substring dentro de uma string.

str.indexOf

str.indexOf(substr, pos) pesquisa substr dentro de str, opcionalmente começando a partir da posição pos. Retorna o índice da primeira correspondência, ou -1 se não houver correspondência:

javascript— editable

str.lastIndexOf

str.lastIndexOf(substr, pos) funciona como indexOf, mas pesquisa a partir do final da string em direção ao início, retornando o índice da última correspondência.

Um erro comum: não use indexOf diretamente em um teste if. Como uma correspondência na posição 0 é falsy, isso parece correto mas está errado:

javascript— editable

Sempre compare com -1 em vez disso:

javascript— editable

includes, startsWith, endsWith

O mais moderno str.includes(substr, pos) retorna true ou false dependendo de se str contém substr. Use-o quando você só precisa saber se uma correspondência existe, não onde:

javascript— editable

Seu segundo argumento opcional é a posição a partir da qual iniciar a pesquisa:

javascript— editable

str.startsWith(substr) e str.endsWith(substr) são intimamente relacionados — eles testam o início e o final da string:

javascript— editable

Obtendo uma Substring

JavaScript tem três métodos para obter uma substring: slice, substring e substr. No código moderno, slice é o recomendado — é o mais flexível e substr é considerado legado.

str.slice(start, end)

slice retorna a parte da string de start até (mas não incluindo) end:

javascript— editable

Se o segundo argumento for omitido, slice vai até o final da string:

javascript— editable

Você também pode usar valores negativos, que contam a partir do final:

javascript— editable

str.substring(start, end)

substring retorna a parte da string entre start e end. É muito parecido com slice, com uma diferença notável: se start for maior que end, substring troca os dois argumentos, enquanto slice retorna uma string vazia. Também trata argumentos negativos como 0:

javascript— editable

str.substr(start, length)

substr retorna a parte da string começando em start com um determinado length. Ao contrário dos outros, seu segundo argumento é um comprimento, não uma posição final. Este método é legado — prefira slice no novo código.

javascript— editable

Um start negativo conta a partir do final:

javascript— editable

Comparação de Strings

Os operadores <, >, <= e >= comparam strings caractere por caractere, usando o código Unicode de cada caractere (veja operadores de comparação para as regras gerais). Duas consequências frequentemente surpreendem os iniciantes:

  1. Uma letra minúscula é "maior que" uma maiúscula, porque as letras minúsculas têm códigos mais altos:
javascript— editable
  1. Letras com marcas diacríticas ficam "fora de ordem" — elas estão fora do intervalo básico A–Z, portanto são comparadas como maiores:
javascript— editable

Por causa disso, os operadores de comparação são adequados para ordenar estritamente por código, mas não para uma ordem alfabética amigável ao ser humano. Para comparação sensível ao locale, use str.localeCompare(other), que retorna um número negativo, 0 ou um número positivo:

javascript— editable

Caracteres e seus códigos

Como as strings são UTF-16, cada caractere tem um código numérico. str.codePointAt(pos) retorna o código do caractere na posição pos:

javascript— editable

String.fromCodePoint(code) faz o inverso — constrói um caractere a partir de um código numérico:

javascript— editable

Você também pode inserir um caractere pelo seu código em um literal de string usando \u seguido do código hex:

javascript— editable

Como exemplo mais completo, aqui está uma string construída a partir dos caracteres com códigos 65..220:

javascript— editable

As letras maiúsculas vêm primeiro, depois alguns caracteres especiais, e a saída termina por volta de Ö.

Tópicos Relacionados

Prática

Prática
Quais são algumas características ou funções das strings em JavaScript conforme descrito no artigo?
Quais são algumas características ou funções das strings em JavaScript conforme descrito no artigo?
Was this page helpful?