Os métodos de String ajudam você a trabalhar com textos.

Valores primitivos, como "João José", não são objetos e não possuem propriedades ou métodos (porque não são objetos).

Porém, com JavaScript, métodos e propriedades também estão disponíveis para valores primitivos, porque o JavaScript trata valores primitivos como objetos ao executar métodos e propriedades.

Comprimento

A propriedade length retorna o comprimento de uma sequência.

var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var sln = txt.length;

Localizando uma String em uma String

O método indexOf() retorna o índice da primeira ocorrência de um texto especificado em uma sequência.

var str = "Please locate where 'locate' occurs!";
var pos = str.indexOf("locate");
var str = "Please locate where 'locate' occurs!";
var pos = str.indexOf("locate");

JavaScript conta posições de zero.

0 é a primeira posição em uma string, 1 é a segunda, 2 é a terceira...

O método lastIndexOf() retorna o índice da última ocorrência de um texto especificado em uma sequência.

var str = "Localize-se onde ocorre 'localizar'!";
var pos = str.lastIndexOf("'localizar'");

Ambos indexOf() e lastIndexOf() retornam -1 se o texto não for encontrado. 

var str = "Localize-se onde ocorre 'localizar'!";
var pos = str.lastIndexOf("João");

Ambos os métodos aceitam um segundo parâmetro como a posição inicial da pesquisa: 

var str = "Localize-se onde ocorre 'localizar'!";
var pos = str.indexOf("'localizar'", 15);

Os métodos lastIndexOf() pesquisam para trás (do fim ao início), significando: se o segundo parâmetro for 15, a pesquisa inicia na posição 15 e pesquisa ocorre até o início da string.

var str = "Localize-se onde ocorre 'localizar'!";
var pos = str.lastIndexOf("localizar", 15);

Procurando por uma String em uma String

O método search() procura em uma string um valor especificado e retorna a posição da correspondência:

var str = " Localize-se onde ocorre 'localizar'!";
var pos = str.search("localizar");

Você Notou?

Que os dois métodos indexOf() e search() parecem ser iguais?

Eles aceitam os mesmos argumentos (parâmetros) e retornam o mesmo valor.

Mas os dois métodos NÃO são iguais. Estas são as diferenças:

  • O método search() não pode aceitar um segundo argumento de posição inicial.
  • O método indexOf() não pode aceitar valores de pesquisa avançados (expressões regulares).

Você aprenderá mais sobre expressões regulares em um capítulo posterior.

Extraindo Partes de Strings

Existem 3 métodos para extrair uma parte de uma sequência:

  • slice(inicio, fim)
  • substring(inicio, fim)
  • substr(inicio, tamanho)

O Método slice()

slice() extrai uma parte de uma sequência e retorna a parte extraída em uma nova sequência.

O método usa 2 parâmetros: a posição inicial e a posição final, sendo que a parte da posição final não é incluída.

Este exemplo corta uma parte de uma sequência da posição 7 para a posição 12 = 13-1:

var str = "Maçã, Banana, Kiwi";
var res = str.slice(7, 13);   // res == Banana

Lembre-se: JavaScript conta posições de zero. A primeira posição é 0.

Se um parâmetro for negativo, a posição será contada a partir do final da string.

Este exemplo corta uma parte de uma sequência da posição -12 para a posição -6: 

var str = "Maçã, Banana, Kiwi";
var res = str.slice(-12, -6);   // res == "Banana"

Se você omitir o segundo parâmetro, o método cortará o restante da string:

var res = str.slice(7);

ou, contando desde o final:

var res = str.slice(-12);

O Método substring ()

O método substring() é semelhante a slice(), diferenciando-se que não aceita índices negativos.

var str = "Maçã, Banana, Kiwi";
var res = str.substring(7, 13);   // res == "Banana

Se você omitir o segundo parâmetro, substring() retornará até o restante da string.

O Método substr ()

substr() é semelhante a slice().

A diferença é que o segundo parâmetro especifica o comprimento da peça extraída.

var str = "Maçã, Banana, Kiwi";
var res = str.substr(7, 6); // res == "Banana"

Se você omitir o segundo parâmetro, substr() cortará o restante da string. 

var str = "Maçã, Banana, Kiwi";
var res = str.substr(7);   // res == "Banana, Kiwi"

Se o primeiro parâmetro for negativo, a posição será contada a partir do final da string. 

var str = "Maçã, Banana, Kiwi";
var res = str.substr(-4);   // res == "Kiwi"

Substituindo o Conteúdo da String

O método replace() substitui um valor especificado por outro valor em uma sequência.

str = "Please visit Microsoft!";
var n = str.replace("Microsoft", "W3Schools");

O método replace() não altera a string em que é chamada. Retorna uma nova string.

Por padrão, replace() substitui apenas a primeira correspondência:

str = "Visite o parque e o parque!";
var n = str.replace("parque", "zoológico");   // n == "Visite o zoológico e o parque!"

Por padrão, o método replace() diferencia maiúsculas de minúsculas.  

str = "Visite o parque!";
var n = str.replace("PARQUE", "zoológico");   // n == "Visite o parque!"

Para substituir sem distinção entre maiúsculas e minúsculas, use uma expressão regular com uma sinalização / (sem distinção de caracteres): 

str = "Visite o parque!";
var n = str.replace(/PARQUE/i, "zoológico");

Observe que expressões regulares são escritas sem aspas.

Para substituir todas as correspondências, use uma expressão regular por uma /g sinalização (correspondência global): 

str = "Visite o parque e o parque!";
var n = str.replace(/parque/g, "zoológico");

Você aprenderá muito mais sobre expressões regulares no capítulo Expressões regulares do JavaScript.

Convertendo para Maiúsculas e Minúsculas

Uma string é convertida para maiúscula com toUpperCase(): 

var text01 = "Alô Mundo!";           // String
var text02 = text01.toUpperCase();   // texto2 é texto1 convertido para maíusculas

Uma string é convertida para minúscula com toLowerCase():

var text01 = "Alô Mundo!";           // String
var text02 = text01.toLowerCase();   // texto2 é texto1 convertido para minúsculas

O método concat ()

concat() junta duas ou mais cadeias: 

var text1 = "Hello";
var text2 = "World";
var text3 = text1.concat(" ", text2);

O método concat() pode ser usado em vez do operador mais. Essas duas linhas fazem o mesmo: 

var text = "Hello" + " " + "World!";
var text = "Hello".concat(" ", "World!");

Todos os métodos de string retornam uma nova string. Eles não modificam a sequência original.

Formalmente dito: As strings são imutáveis: as strings não podem ser alteradas, apenas substituídas.

String.trim ()

O método trim() remove o espaço em branco dos dois lados de uma sequência: 

var str = "                                           Hello World!           ";
alert(str.trim());

Você pode usar replace() com uma expressão regular:

var str = "                                           Alô Mundo!           ";
alert(str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''));

Você também pode usar a solução de substituição acima para adicionar uma função de recorte ao JavaScript String.prototype:

if (!String.prototype.trim) {
  String.prototype.trim = function () {
    return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
  };
}
var str = "                                           Alô Mundo!           ";
alert(str.trim());

Extraindo Caracteres de Sequência

Existem 3 métodos para extrair caracteres de sequência:

  • charAt(posição)
  • charCodeAt(posição)
  • Acesso à propriedade []

O método charAt ()

O método charAt() retorna o caracter em um índice especificado (posição) em uma string:

var str = "Hojé é o dia!";
str.charAt(0); // retorna "H"

O método charCodeAt ()

O charCodeAt()método retorna o unicode do caractere em um índice especificado em uma string:

O método retorna um código UTF-16 (um número inteiro entre 0 e 65535).

var str = "Hoje é o dia!";
str.charCodeAt(0); // retorna 72

Acesso ao caracter na posição com a Propriedade []

O ECMAScript 5 (2009) permite o acesso à propriedade [] nas strings: 

var str = "Alô Mundo";
str[0]; // retorna "A"

O acesso à propriedade pode ser um pouco imprevisível:

  • Não funciona no Internet Explorer 7 ou anterior
  • Faz as strings parecerem matrizes (mas não são)
  • Se nenhum caractere for encontrado, [] retornará indefinido, enquanto charAt () retornará uma string vazia.
  • É somente leitura. str [0] = "A" não dá erro (mas não funciona!) 
var str = "Alô Mundo";
str[0] = "X";   // Não causa erro mas não funciona
str[0];         // retorna "A"

Convertendo uma String em uma Matriz

Uma string pode ser convertida em uma matriz com o método split(): 

var txt = "a,b,c,d,e";   // String
txt.split(",");          // Dividir nas vírgulas
txt.split(" ");          // Dividir nos espaços
txt.split("|");          // Dividir nos traços verticais

Se o separador for omitido, a matriz retornada conterá toda a string no índice [0].

var txt = "Interessante";   // String
txt.split("");              // Divivir em caracteres

Se o separador for "", a matriz retornada será uma matriz de caracteres únicos: 

Referência de seqüência completa

Para uma referência completa, acesse nossa Referência completa de cadeias JavaScript.

A referência contém descrições e exemplos de todas as propriedades e métodos de sequência.

Teste-se com exercícios

Encontre a posição do caractere hna string txt.
var txt = "abcdefghijklm";
var pos = txt.;