A ferramenta de Remover Duplicatas toma um bloco de texto, o parte em linhas e apaga cada linha que seja um repetido exato de uma linha anterior, no navegador. O marcador mostra o exemplo em marcha: apple, banana, apple, cherry, banana, date. Você pressiona o botão Remove Duplicates, e o bloco de resultado imprime o texto deduplicado num campo de somente leitura, com uma linha verde acima lendo Removed 2 duplicate(s). Nada é enviado a lugar nenhum: a divisão, o conjunto e a união correm no dispositivo, e o botão Clear apaga a entrada, a saída e a contagem.
O que a ferramenta recebe e o que dá
A entrada é uma única área de texto, de dez linhas de altura e redimensionável, e nada mais é pedido. Em cima há um botão Clear que reinicia tudo, e embaixo um botão de ação, Remove Duplicates, então o cálculo não é ao vivo: o resultado só muda quando você o pressiona. A saída é uma área de texto de somente leitura da mesma altura, e um botão de copiar se senta junto ao seu rótulo Result, mas só quando a saída não está vazia. A linha verde de contagem, Removed N duplicate(s), aparece só quando N está acima de zero, então uma entrada sem repetições mostra o resultado e nada mais.
Como a deduplicação funciona
A entrada é partida num array de linhas pelas quebras de linha, e as linhas são percorridas em ordem com um conjunto que lembra cada linha já conservada. A primeira vez que uma linha é vista, ela entra no conjunto e na lista de saída; cada vez que é vista de novo, só é contada como duplicada e descartada. As linhas conservadas são unidas de volta com quebras de linha, então a saída é a entrada com as repetições tiradas, na ordem original de primeira aparição, nunca reordenada. Para o marcador, apple, banana, apple, cherry, banana, date, o resultado é apple, banana, cherry, date, com 2 removidas. O percurso é uma passada sobre as linhas, então uma entrada de 100,000 linhas com 50,000 únicas é processada em cerca de 40 milissegundos.
O que conta como a mesma linha
Duas linhas são a mesma só quando cada caractere coincide, porque a comparação é uma prova exata de string, sem normalização. Maiúsculas contam, então A e a são linhas diferentes e ambas ficam. Espaços contam, então um a com um espaço final e um a com um espaço inicial são linhas diferentes e ambas ficam. Acentos contam, então café e cafe são linhas diferentes e ambas ficam. Linhas vazias também contam como linhas: uma linha que está vazia continua sendo uma linha, e uma linha que é só um espaço é uma linha de espaço, então duas linhas de só espaços reduzem a uma. Se suas repetições diferem em uma dessas coisas, não são repetições para esta ferramenta, e a contagem fica em zero.
O que acontece com quebras de linha e linhas vazias
A divisão só procura o caractere de quebra de linha, então um arquivo que termina com uma quebra de linha sai com uma linha extra, vazia, no final, e como qualquer primeira aparição de uma linha vazia, ela é conservada: uma entrada de a e b, cada um em sua linha terminando com uma quebra de linha, volta sem mudanças, com 0 removidas. Duas linhas vazias consecutivas reduzem a uma, e uma entrada que é uma única quebra de linha remove uma linha e imprime um resultado vazio, que ainda mostra o bloco de resultado mas sem botão de copiar. Quebras de linha de Windows são a lâmina: a divisão não tira o retorno de carrinho, então o mesmo texto lido de um arquivo de Windows é uma linha diferente do mesmo texto sem ele, e uma cópia do resultado conserva os retornos de carrinho.
Como a contagem de removidas é lida
A linha verde conta só as linhas que foram jogadas fora, não as que foram conservadas. Quatro linhas idênticas, x x x x, removem 3 e conservam 1; uma entrada entrelaçada, 1 2 1 2, remove 2 e conserva 2; e uma entrada sem repetições exatas não mostra nada, porque a linha só se renderiza quando a contagem está acima de zero. A contagem é a diferença entre o número de linhas da entrada e o da saída, nada mais.
Para onde o texto vai
Para lugar nenhum fora do dispositivo. O valor da área de texto é lido pela página, a divisão, o conjunto e a união correm no navegador, e nenhuma requisição de rede é feita em nenhum ponto. Não há histórico nem resultado guardado: o único estado são os três valores que a página guarda, entrada, saída e contagem, e Clear os reinicia para vazio e zero. Copiar usa a área de transferência do navegador, então o texto sai da página só se você pressionar copiar e colar em outro lugar.
O que não é
A ferramenta deduplica linhas, não normaliza o texto: para tirar os espaços e as linhas vazias que fazem linhas quase idênticas parecerem diferentes, use antes o Limpa Espaços em Branco; para colocar as linhas conservadas em ordem alfabética depois, isso é o que a ferramenta Ordenar Linhas faz; e para contar quantas vezes cada palavra aparece em vez de cada linha, isso é o que o Contador de Frequência de Palavras faz. Para o passo a passo de uma ferramenta de texto da mesma veia, veja a guia de reversão de texto.