Antes do Acordo Ortográfico de 1990, a letra "c" com cedilha era comum em muitas palavras que hoje se escrevem sem ela, e ainda hoje textos digitados às pressas às vezes trocam "ç" por um simples "c". Para um deduplicador, "ação" e "acao" são duas strings completamente distintas — o mecanismo compara bytes, não reconhece que uma é apenas a outra sem o acento.
Ordenação alfabética vs numérica
A ordenação alfabética (lexicográfica) compara strings caractere por caractere, como texto. Por isso a string "10" acaba antes de "9", porque o caractere "1" é lexicograficamente menor que "9" — a ordenação não "entende" que são números. A ordenação numérica, por outro lado, interpreta as strings como números antes de compará-las, dando a ordem esperada 9, 10, 11.
Maiúsculas e minúsculas na ordenação
Na maioria dos sistemas, letras maiúsculas precedem lexicograficamente as minúsculas (por causa da codificação de caracteres), então "Zebra" pode acabar antes de "abacaxi" numa ordenação sensível a maiúsculas. Uma ordenação insensível a maiúsculas normaliza primeiro as strings para a mesma capitalização na comparação, mantendo a capitalização original no resultado.
Remoção de duplicatas
A deduplicação remove linhas repetidas comparando-as caractere por caractere, não pelo sentido. Um detalhe importante é a sensibilidade a maiúsculas e espaços: as strings "Texto" e "texto " (com um espaço a mais) são tecnicamente diferentes e não serão mescladas sem uma normalização adicional antes da comparação.
Para que serve
- Remover entradas repetidas de uma lista de endereços de email ou URLs antes de uma importação.
- Ordenar uma lista de versões ou IDs numericamente em vez de como texto.
- Comparar rapidamente dois conjuntos de dados trazendo ambas as listas para a mesma forma ordenada.
Ordenação natural (natural sort)
A ordenação natural é um meio-termo entre a abordagem alfabética e a numérica: ela reconhece sequências de dígitos dentro de uma string como números, comparando o restante dos caracteres como texto. Assim, file2.txt acaba antes de file10.txt, embora formalmente sejam strings, não números isolados — útil para nomes de arquivos ou versões com um prefixo textual.