Esse capÃtulo introduz como trabalhar com strings e texto em JavaScript.
StringsO tipo String do JavaScript é usado para representar informações de texto. à um conjunto de "elementos" composto por valores inteiros de 16-bits sem sinal. Cada elemento dentro da String ocupa uma posição dentro dessa String. O primeiro elemento está no Ãndice 0, o próximo no Ãndice 1, e assim sucessivamente. O tamanho de uma String é a quantidade de elementos que ela possui. Você pode criar strings usando strings literais ou objetos string.
Strings literaisVocê pode criar strings usando aspas simples ou aspas duplas:
Strings mais avançadas podem ser criadas usando sequências de escape:
Sequências de escape hexadecimaisO número depois de \x é interpretado como um número hexadecimal.
Sequências de escape unicodeAs sequências de escape unicode requerem no mÃnimo quatro caracteres depois do \u
.
à novo no ECMAScript 6. Com essas sequências, cada caractere pode ser "escapado" usando números hexadecimais, sendo possÃvel usar pontos de código Unicode de até 0x10FFFF. Com escapes Unicode simples muitas vezes é necessário escrever as metades substitutas separadamente para obter o mesmo resultado.
Veja também String.fromCodePoint()
or String.prototype.codePointAt()
.
"\u{2F804}";
// o mesmo com escapes Unicode simples
"\uD87E\uDC04";
Objetos String
O objeto String
é como uma "capa" ao redor do tipo primitivo string.
var s = new String("foo"); // Cria um objeto String
console.log(s); // Exibe no console: { '0': 'f', '1': 'o', '2': 'o'}
typeof s; // Retorna 'object'
Você pode chamar qualquer um dos métodos do objeto String
em cima de uma string literal â JavaScript automaticamente converte a string literal em um objeto String
temporário, chama o método, e então descarta o objeto String
temporário. Você pode também usar a propriedade String.length
com uma string literal.
Você deve usar strings literais a menos que você realmente precise usar um objeto String
, pois objetos String
podem ter comportamentos inesperados. Por exemplo:
var s1 = "2 + 2"; // Cria uma string literal
var s2 = new String("2 + 2"); // Creates um objeto String
eval(s1); // Retorna o número 4
eval(s2); // Retorna a string "2 + 2"
Um objeto String
possui uma propriedade, length
, que indica o número de caracteres na string. Por exemplo, o código a seguir atribui o valor 11 à variável x
, pois "Olá, mundo!" possui 11 caracteres:
var minhaString = "Olá, mundo!";
var x = minhaString.length;
Um objeto String
possui uma variedade de métodos: por exemplo aqueles que retornam uma variação da própria string, como substring
e toUpperCase
.
A tabela a seguir lista os métodos de objetos String
.
charAt
, charCodeAt
, codePointAt
Retorna o código do caractere ou o caractere em uma posição especÃfica na string. indexOf
, lastIndexOf
Retorna a posição de uma substring especÃfica na string ou a última posição da substring especÃfica, respectivamente. startsWith
, endsWith
, includes
Retorna se uma string começa, termina ou contém uma outra string especÃfica. concat
Concatena o texto de duas strings e retorna uma nova string. fromCharCode
, fromCodePoint
Cria uma string a partir de uma sequência especÃfica de valores Unicode. Esse é um método da classe String, não de uma instância do tipo String. split
Separa um objeto String
em um array de strings, separando a string em substrings. slice
Extrai uma seção de uma string e retorna uma nova string. substring
, substr
Retorna um subconjunto especÃfico de uma string, definindo os Ãndices inicial e final, ou definindo um Ãndice e um tamanho. match
, replace
, search
Trabalha com expressões regulares. toLowerCase
, toUpperCase
Retorna a string com todos caracteres em minúsculo, ou maiúsculo, respectivamente. normalize
Retorna a Forma Normalizada Unicode (Unicode Normalization Form) da string que chama o método. repeat
Retorna uma string contendo os elementos do objeto repetidos pela quantidade de vezes dada. trim
Retira espaços em branco no começo e no final da string. Template strings com várias linhas
Template strings são strings literais que permitem expressões no seu conteúdo. Você pode usar os recursos de strings com multiplas linhas e interpolações de string com as template strings.
Template strings são declaradas com o acento grave (``) ao invés de aspas simples ou aspas duplas. Essas strings podem conter place holders. Os place holders são indicados pelo cifrão e com chaves ( ${expressao}
).
Qualquer caractere de nova linha ( '\n'
) inserido na string também faz parte das template string. Usando strings normais, você teria que usar a sintaxe a seguir para conseguir uma string de várias linhas
console.log(
"linha de texto 1\n\
linha de texto 2",
);
// "linha de texto 1
// linha de texto 2"
Para obter o mesmo efeito com strings multi-lines, você pode agora escrever:
console.log(`linha de texto 1
linha de texto 2`);
// "linha de texto 1
// linha de texto 2"
Expressões inseridas
Para conseguir inserir expressões com strings normais, você teria que usar a seguinte sintaxe:
var a = 5;
var b = 10;
console.log("Quinze é " + (a + b) + " e\nnão " + (2 * a + b) + ".");
// "Quinze é 15 e
// não 20."
Agora, com template strings, você tem a capacidade de usar uma forma mais simples e legÃvel para fazer essas substituições:
var a = 5;
var b = 10;
console.log(`Quinze é ${a + b} e\nnão ${2 * a + b}.`);
// "Quinze é 15 e
// não 20."
Para mais informações, leia sobre Template strings na referência JavaScript.
InternacionalizaçãoO objeto Intl
é o namespace para a API de Internacionalização do ECMAScript, que oferece comparação de strings sensÃveis à linguagem, formatação de números, e formatação de datas e horas. Os construtores para os objetos Collator
, NumberFormat
, e DateTimeFormat
são propriedades do objeto Intl
.
O objeto DateTimeFormat
é útil para a formatação de data e hora. O código a seguir formata uma data em inglês no formato que é utilizado nos Estados Unidos. (O resultado é diferente em outro fuso horário).
var msPorDia = 24 * 60 * 60 * 1000; // número de milisegundos em um dia
// July 17, 2014 00:00:00 UTC.
var july172014 = new Date(msPorDia * (44 * 365 + 11 + 197));
var opcoes = {
year: "2-digit",
month: "2-digit",
day: "2-digit",
hour: "2-digit",
minute: "2-digit",
timeZoneName: "short",
};
var americanDateTime = new Intl.DateTimeFormat("en-US", opcoes).format;
console.log(americanDateTime(july172014)); // 07/16/14, 5:00 PM PDT
Formatação de números
O objeto NumberFormat
é útil para formatar números, por exemplo unidade monetária.
var precoGasolina = new Intl.NumberFormat("en-US", {
style: "currency",
currency: "USD",
minimumFractionDigits: 3,
});
console.log(precoGasolina.format(5.259)); // $5.259
var hanDecimalRMBInChina = new Intl.NumberFormat("zh-CN-u-nu-hanidec", {
style: "currency",
currency: "CNY",
});
console.log(hanDecimalRMBInChina.format(1314.25)); // ï¿¥ ä¸,ä¸ä¸å.äºäº
Collation
O objeto Collator
é usado para comparar e ordenar strings.
Por exemplo, existem atualmente duas ordens diferentes de classificação no Alemão: listaTelefônica e dicionário. A ordenação da listaTelefônica enfatiza o som, e é como se "ä", "ö", e assim por diante, fossem expandidos para "ae", "oe", e assim sucessivamente, para definir a ordem.
var nomes = ["Hochberg", "Hönigswald", "Holzman"];
var phonebookAlemao = new Intl.Collator("de-DE-u-co-phonebk");
// como se ordenasse ["Hochberg", "Hoenigswald", "Holzman"]:
console.log(names.sort(phonebookAlemao.compare).join(", "));
// imprime "Hochberg, Hönigswald, Holzman"
Algumas palavras do alemão são conjugadas com tremas extras, mas no dicionário essas palavras são ordenadas ignorando os tremas (exceto quando ordenando palavras que tem apenas o trema como diferença: schon antes de schön).
var dicionarioAlemao = new Intl.Collator("de-DE-u-co-dict");
// como se ordenasse ["Hochberg", "Honigswald", "Holzman"]:
console.log(names.sort(dicionarioAlemao.compare).join(", "));
// imprime "Hochberg, Holzman, Hönigswald"
Para mais informação sobre a API Intl
, veja também Introducing the JavaScript Internationalization API (em inglês).
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4