| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/String/normalize | [Back] [Original] |
Get to know MDN better
Esta pgina foi traduzida do ingls pela comunidade. Saiba mais e junte-se comunidade MDN Web Docs.
This feature is well established and works across many devices and browser versions. Its been available across browsers since setembro de 2016.
O mtodo normalize() retorna a Forma de Normalizao Unicode (Unicode Normalization Form) de uma dada string (se o valor no uma string, ele ser convertido para uma primeiramente).
str.normalize([form])
formOpcional. Um dentre os seguintes valores: "NFC", "NFD", "NFKC", ou "NFKD", especificando o formato de normalizao. Se o valor for omitido ou for undefined, "NFC" ser utilizado.
NFC Formato de Normalizao Cannico de Composio.NFD Formato de Normalizao Cannico de Decomposio.NFKC Formato de Normalizao de Compatibilidade de Composio.NFKD Formato de Normalizao de Compatibilidade de Decomposio.Uma string contendo a Forma de Normalizao Unicode da string dada.
RangeErrorEm erro RangeError lanado se form no for um dos valores especificados acima.
O Unicode atribui um valor numrico exclusivo, denominado ponto de cdigo, a cada caractere. Por exemplo, o ponto de cdigo para "A" fornecido como U+0041. No entanto, s vezes mais de um ponto de cdigo, ou sequncia de pontos de cdigo, podem representar o mesmo caractere abstrato - o caractere "", por exemplo, pode ser representado por:
"n" (U+006E) seguido pelo ponto de cdigo para o til (U+0303).let string1 = "\u00F1";
let string2 = "\u006E\u0303";
console.log(string1); // retorna
console.log(string2); // retorna
No entanto, como os pontos de cdigo so diferentes, a comparao de strings no os tratar como iguais. E como o nmero de pontos de cdigo em cada verso diferente, eles at mesmo possuem comprimentos diferentes.
let string1 = "\u00F1"; //
let string2 = "\u006E\u0303"; //
console.log(string1 === string2); // retorna false
console.log(string1.length); // retorna 1
console.log(string2.length); // retorna 2
O mtodo normalize() ajuda a resolver esse problema convertendo uma string em uma forma normalizada comum para todas as sequncias de pontos de cdigo que representam os mesmos caracteres. Existem duas principais formas de normalizao, uma baseada na equivalncia cannica e a outra baseada na compatibilidade.
Em Unicode, duas sequncias de pontos de cdigo tm equivalncia cannica se representarem os mesmos caracteres abstratos e tiverem sempre a mesma aparncia visual e comportamento (por exemplo, eles devem sempre ser classificados da mesma maneira).
Voc pode usar o normalize() usando os argumentos "NFD" ou "NFC" para produzir uma forma de string que ser a mesma para todas as strings canonicamente equivalentes. No exemplo abaixo, normalizamos duas representaes do caractere "":
let string1 = "\u00F1"; //
let string2 = "\u006E\u0303"; //
string1 = string1.normalize("NFD");
string2 = string2.normalize("NFD");
console.log(string1 === string2); // retorna true
console.log(string1.length); // retorna 2
console.log(string2.length); // retorna 2
Observe que o comprimento da forma normalizada em "NFD" 2. Isso porque "NFD" fornece a verso decomposta da forma cannica, na qual pontos de cdigo nicos so divididos em vrios combinados. A forma cannica decomposta para "" "\u006E\u0303".
Voc pode especificar "NFC" para obter a forma cannica composta, na qual vrios pontos de cdigo so substitudos por pontos de cdigo nicos sempre que possvel. A forma cannica composta para "" "\u00F1":
let string1 = "\u00F1"; //
let string2 = "\u006E\u0303"; //
string1 = string1.normalize("NFC");
string2 = string2.normalize("NFC");
console.log(string1 === string2); // true
console.log(string1.length); // 1
console.log(string2.length); // 1
console.log(string2.codePointAt(0).toString(16)); // f1
No Unicode, duas sequncias de pontos de cdigo so compatveis se representarem os mesmos caracteres abstratos e devem ser tratadas da mesma forma em algumas - mas no necessariamente em todas - aplicaes.
Todas as sequncias canonicamente equivalentes tambm so compatveis, mas no o contrrio.
Por exemplo:
"". compatvel com dois pontos de cdigo U+0066 consecutivos ("ff")."". compatvel com o ponto de cdigo U+0044 ("D").Em alguns aspectos (como classificao), eles devem ser tratados como equivalentes - e em alguns (como a aparncia visual) no devem, portanto, no so canonicamente equivalentes.
Voc pode usar o normalize() usando os argumentos "NFKD" ou "NFKC" para produzir uma forma de string que ser a mesma para todas as strings compatveis:
let string1 = "\uFB00";
let string2 = "\u0066\u0066";
console.log(string1); //
console.log(string2); // ff
console.log(string1 === string2); // false
console.log(string1.length); // 1
console.log(string2.length); // 2
string1 = string1.normalize("NFKD");
string2 = string2.normalize("NFKD");
console.log(string1); // ff <- aparncia visual modificada
console.log(string2); // ff
console.log(string1 === string2); // true
console.log(string1.length); // 2
console.log(string2.length); // 2
Ao aplicar a normalizao de compatibilidade, importante considerar o que voc pretende fazer com as strings, uma vez que a forma normalizada pode no ser apropriada para as aplicaes. No exemplo acima, a normalizao apropriada para pesquisa, porque permite que um usurio encontre a string pesquisando por "f". Mas pode no ser apropriado para exibio, porque a representao visual diferente.
Como na normalizao cannica, voc pode solicitar formulrios compatveis decompostos ou compostos passando "NFKD" ou "NFKC", respectivamente.
normalize()// String Inicial
// U+1E9B: CARACTERE LATINO - LETRA S COMPRIDA COM PONTO ACIMA
// U+0323: COMBINANDO PONTO ABAIXO
var str = "\u1E9B\u0323";
// Formato de Normalizao Cannico de Composio (NFC)
// U+1E9B: CARACTERE LATINO - LETRA S COMPRIDA COM PONTO ACIMA
// U+0323: COMBINANDO PONTO ABAIXO
str.normalize("NFC"); // '\u1E9B\u0323'
str.normalize(); // igual linha de cima
// Formato de Normalizao Cannico de Decomposio (NFD)
// U+017F: CARACTERE LATINO - LETRA S COMPRIDA
// U+0323: COMBINANDO PONTO ABAIXO
// U+0307: COMBINANDO PONTO ACIMA
str.normalize("NFD"); // '\u017F\u0323\u0307'
// Formato de Normalizao de Compatibilidade de Composio. (NFKC)
// U+1E69: CARACTERE LATINO - LETRA S COMPRIDA COM PONTO ACIMA E ABAIXO
str.normalize("NFKC"); // '\u1E69'
// Formato de Normalizao de Compatibilidade de Decomposio (NFKD)
// U+0073: CARACTERE LATINO - LETRA S COMPRIDA
// U+0323: COMBINANDO PONTO ABAIXO
// U+0307: COMBINANDO PONTO ACIMA
str.normalize("NFKD"); // '\u0073\u0323\u0307'
| Specification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-string.prototype.normalize |
This page was last modified on 24 de jun. de 2025 by MDN contributors.
StringString.prototype.anchor()at()String.prototype.big()String.prototype.blink()String.prototype.bold()String.prototype.charAt()String.prototype.charCodeAt()String.prototype.codePointAt()String.prototype.concat()String.prototype.endsWith()String.prototype.fixed()String.prototype.fontcolor()String.prototype.fontsize()String.prototype.includes()String.prototype.indexOf()isWellFormed()String.prototype.italics()String.prototype.lastIndexOf()String.prototype.link()String.prototype.localeCompare()String.prototype.match()String.prototype.matchAll()String.prototype.normalize()String.prototype.padEnd()String.prototype.padStart()String.prototype.repeat()String.prototype.replace()String.prototype.replaceAll()String.prototype.search()String.prototype.slice()String.prototype.small()String.prototype.split()String.prototype.startsWith()String.prototype.strike()String.prototype.sub()String.prototype.substr()String.prototype.substring()String.prototype.sup()String.prototype.toLocaleLowerCase()String.prototype.toLocaleUpperCase()String.prototype.toLowerCase()String.prototype.toString()String.prototype.toUpperCase()toWellFormed()String.prototype.trim()String.prototype.trimEnd()String.prototype.trimStart()String.prototype.valueOf()String.prototype[@@iterator]()Object/FunctionObject.prototype.__defineGetter__()Object.prototype.__defineSetter__()Object.prototype.__lookupGetter__()Object.prototype.__lookupSetter__()Object.prototype.hasOwnProperty()Object.prototype.isPrototypeOf()Object.prototype.propertyIsEnumerable()Object.prototype.toLocaleString()Object.prototype.toString()Object.prototype.valueOf()Your blueprint for a better internet.
Portions of this content are 19982026 by individual mozilla.org contributors. Content available under a Creative Commons license.
| Web Proxy Viewer | New URL | Original Page |