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.;