Pular para o conteúdo principal

Comparar textos

O Comparador de diferenças é um mecanismo de comparação textual rápido e do lado do cliente, que executa o algoritmo de diferenças de Myers direto no seu navegador. Ele suporta granularidade por linha, por palavra e por caractere, visões unificada e lado a lado, alternadores de normalização de espaços em branco e de maiúsculas/minúsculas, e geração instantânea de patch de diff unificado, sem nenhuma transmissão externa pela rede.

Só local
Texto original (base)
0 B1 linhaLin. 1, Col. 1
Texto modificado (destino)
0 B1 linhaLin. 1, Col. 1
Métricas:+0 adicionadas-0 removidas1 sem alterações
1
1

Como funciona o Comparar textos?

O motor de diff de texto do ToolsByUs é baseado no artigo seminal de Eugene W. Myers, "An O(ND) Difference Algorithm and Its Variations". O algoritmo modela o problema de computar o menor script de edições (SES) como achar o caminho mais curto em um grafo de edições que se estende das coordenadas (0, 0) a (N, M).

Ao acompanhar os caminhos que alcançam mais longe ao longo das diagonais k = x - y para cada distância de edição D, o diff de Myers descobre o número mínimo de inserções e exclusões necessário para transformar o texto original no texto-alvo. Quando aplicado no nível de palavra, o motor faz um diff secundário sobre as linhas modificadas para isolar com precisão as exclusões e inserções no nível de palavra.

Diferente das ferramentas do lado do servidor, que transmitem seus arquivos-fonte, configurações proprietárias ou logs confidenciais para um banco de dados remoto, o ToolsByUs roda toda a matriz de edição de Myers direto na memória do navegador.

Amostra original vs. modificada

// Original:
const port = 8080;

// Modified:
const port = 3000;

Exemplo de saída

// Unified Diff:
@@ -1,1 +1,1 @@
-const port = 8080;
+const port = 3000;

Amostra original vs. modificada → Exemplo de saída

Amostra original vs. modificada

server:
  host: localhost
  port: 8080
  timeout: 30

Amostra original vs. modificada 2

server:
  host: 0.0.0.0
  port: 8080
  timeout: 60
  retries: 3

Exemplo de saída

--- a/original
+++ b/modified
@@ -1,4 +1,5 @@
 server:
-  host: localhost
+  host: 0.0.0.0
   port: 8080
-  timeout: 30
+  timeout: 60
+  retries: 3

Quais opções e casos-limite o Comparar textos suporta?

Referência técnica e opções
ParâmetroTipoPadrãoComportamento e casos-limite
Granularidade: linhaModoPadrãoDivide o texto nas quebras de linha. Execução rápida O(ND), ideal para código, configurações e scripts.
Granularidade: palavraModoOpcionalDivide as linhas em tokens de palavra. Linhas modificadas destacam inserções e exclusões no nível de palavra.
Granularidade: caractereModoOpcionalDivide strings em unidades de caractere individuais. Localiza erros de digitação, hashes e strings base64.
Ignorar espaçosAlternadorfalseNormaliza espaços e tabs consecutivos para que ajustes de indentação não acionem alterações.
Ignorar maiúsculas e minúsculasAlternadorfalseCompara o texto sem diferenciar maiúsculas de minúsculas, útil para consultas SQL, cabeçalhos HTTP ou tags HTML.
Exportação de diff unificadoFormatoPadrãoExporta o formato diff unificado padrão, compatível com git apply, patch(1) e ferramentas de revisão.

Perguntas frequentes

Como funciona o algoritmo de diff de Myers?

O algoritmo de diff de Myers acha a menor sequência de adições e exclusões para converter a sequência A na sequência B. Ele opera explorando caminhos diagonais por uma grade de edições, o que garante a minimidade matemática da saída do diff resultante.

Posso exportar um arquivo de patch de diff unificado?

Sim. Clicar em 'Exportar Patch Unificado' produz um documento de patch unificado padrão, com cabeçalhos '---' e '+++' e intervalos de hunk '@@ -start,len +start,len @@', que pode ser copiado ou passado direto para os utilitários padrão patch do UNIX ou git apply.

Como o diff no nível de palavra ajuda em revisões de código?

Diffs de linha padrão destacam a linha inteira mesmo que só um caractere ou nome de variável tenha mudado. Nosso motor de diff no nível de palavra compara as linhas modificadas token por token, destacando apenas os tokens alterados dentro da linha.

Meus documentos são salvos ou guardados em cache em algum servidor?

Não. O ToolsByUs não tem servidor de backend nem banco de dados. Todos os cálculos de diff rodam estritamente dentro do seu navegador. Nenhum arquivo, log ou texto é enviado, em momento algum.

Qual é a diferença entre diff por linha, por palavra e por caractere?

Um diff de linha marca a linha inteira como alterada no instante em que um caractere dela difere — o que é certo para prosa e errado para uma linha de código em que uma única variável foi renomeada. O modo palavra compara os tokens dentro de cada linha alterada; o modo caractere desce até letras individuais, que é o que encontra um caractere trocado em um identificador ou um espaço a mais em um valor de configuração.

Posso comparar aqui código confidencial de um repositório privado?

Sim, e você pode verificar em vez de confiar. A comparação roda nesta aba; abra o DevTools, vá para o painel Network, cole e compare, e nenhuma requisição levando o seu texto aparece. A página é servida com um Content-Security-Policy de connect-src 'self', então o próprio navegador recusaria uma requisição de saída. Depois que a página carrega, ela também funciona com a rede totalmente desconectada.