Como verificar se duas strings são iguais em JavaScript

Resumo : neste tutorial, você aprenderá como verificar se duas strings são iguais em JavaScript.

Suponha que você tenha as duas strings a seguir:

const s1 = 'Hi';
const s2 = 'Hi';Linguagem de código:  JavaScript  ( javascript )

Como s1e s2têm os mesmos caracteres, eles são iguais quando você os compara usando o ===operador:

console.log(s1 === s2); // trueLinguagem de código:  JavaScript  ( javascript )

Considere o seguinte exemplo:

const s1 = 'café';
const s2 = 'café';
console.log(s1===s2); // falseLinguagem de código:  JavaScript  ( javascript )

Neste exemplo, s1e s2parece o mesmo. Mas a comparação s1 === s2 é avaliada como false.

Para entender como funciona, primeiro você precisa conhecer o conceito de grafema e combinação de caracteres.

O que é um grafema

Um grafema é a menor unidade funcional de um sistema de escrita.

Por exemplo, a string cafétem quatro letras: c, a, fe é(ou ecom acute). A maneira como você vê que cada caractere é uma unidade de escrita é chamada de grafema.

E alguns grafemas podem ser representados usando diferentes sequências de caracteres.

Existem alguns caracteres que quando você os coloca depois de um caractere, modificam o caractere anterior. Esses caracteres são chamados de caracteres de combinação.

O que é um personagem combinado

Um caractere de combinação é um caractere que se aplica ao caractere base precedente para criar um grafema.

Em nosso exemplo, the éé um grafema atômico. E você pode codificá-lo usando letras minúsculas e(caractere base) e um caractere de combinação (◌́):

e + ◌́ = é

Em JavaScript, o caractere é é representado da seguinte forma:

const c1 = 'e\u0301';
console.log(c1); // Linguagem de código:  JavaScript  ( javascript )

Neste exemplo, \u0301 é a sequência de escape Unicode do caractere de combinação ◌́.

Além disso, você pode codificar o mesmo grafema é usando letras minúsculas ecom caractere agudo:

const c2 = 'é';
console.log(c2);Linguagem de código:  JavaScript  ( javascript )

Agora, se você comparar os c1e c2do mesmo grafema é, descobrirá que eles não são iguais:

const c1 = 'e\u0301';
const c2 = 'é';
console.log(c1 === c2); // falseLinguagem de código:  JavaScript  ( javascript )

Para comparar essas strings com segurança, você usa o normalize()método. Este método retorna a forma de normalização Unicode de uma string. Por exemplo:

const c1 = 'e\u0301';
console.log(c1.normalize()); // 
éLinguagem de código:  JavaScript  ( javascript )

Portanto, c1e c2será igual após a normalização:

const c1 = 'e\u0301';
const c2 = 'é';
console.log(c1.normalize() === c2.normalize()); // trueLinguagem de código:  JavaScript  ( javascript )

Da mesma forma, comparar as seguintes strings também retorna true:

const s1 = 'café';
const s2 = 'café';
console.log(s1.normalize() === s2.normalize()); // trueLinguagem de código:  JavaScript  ( javascript )

Resumo

  • Geralmente, se as strings contêm apenas caracteres ASCII, você usa o operador === para verificar se eles são iguais.
  • Quando as strings contêm caracteres que incluem caracteres de combinação, você as normaliza primeiro antes de compará-las quanto à igualdade.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *