ToolActToolAct

Outil de Comparaison de Texte

Texte originalOLD
1
Nouveau texteNEW
1
0 lignes ajoutées0 lignes supprimées
UTF-8

Qu'est-ce que la comparaison de texte ?

Text Diff compare deux versions d’un texte et met en évidence les lignes ou sections ajoutées, supprimées, modifiées ou inchangées. Il sert à relire des extraits de code, fichiers de configuration, traductions, contrats, documents Markdown, versions de prompt, notes de version et journaux sans parcourir les deux copies à la main. L’outil est précieux lorsqu’une petite modification se cache dans un long contenu ou lorsque la mise en forme, les espaces, la ponctuation ou l’ordre ont pu changer par erreur. Un diff ne dit pas si la nouvelle version est juste; il montre précisément où les textes divergent pour concentrer la relecture.

Mode d'emploi

Mode d'emploi

  1. Collez le texte original dans la zone de saisie de gauche
  2. Collez le texte modifié dans la zone de saisie de droite
  3. Le système calcule automatiquement les différences et les met en évidence ; la barre d'état affiche le nombre de lignes ajoutées et supprimées.

Conseils de relecture

  • Normalisez les fins de ligne et les espaces avant la comparaison quand le vrai changement porte sur le contenu et non la mise en forme.
  • Pour du code ou des textes juridiques, vérifiez les modifications en surbrillance manuellement ; la comparaison automatique montre les différences mais ne juge ni l'intention ni la correction.

Cas d’utilisation

Comparer deux versions de texte ligne par ligneCollez le texte original et modifié dans des éditeurs côte à côte et l’outil calcule un diff par ligne en utilisant une approche de distance d’édition par programmation dynamique. Les lignes ajoutées sont surlignées à droite et les lignes supprimées à gauche. La ligne d’état indique le nombre de lignes ajoutées et supprimées afin que les relecteurs puissent voir l’ampleur des changements en un coup d’œil.
Relire de petites modifications sans un workflow Git completLes panneaux ancien et nouveau comportent des numéros de ligne, des actions d’effacement et de collage, et des compteurs de lignes ajoutées et supprimées. Cela est utile pour comparer des traductions, des extraits de configuration, du texte généré ou des notes copiées en dehors d’un dépôt. Des diffs rapides dans le navigateur maintiennent l’attention des relecteurs sur le contenu plutôt que sur l’historique des commits.
Repérer rapidement les changements structurelsComme la comparaison fonctionne au niveau de la ligne, elle met l’accent sur les lignes insérées et supprimées plutôt que sur les fautes de frappe au niveau du caractère. Cela la rend idéale pour les paragraphes, listes, fragments JSON, sections de documentation et sorties multi-lignes. Pour la relecture au niveau du caractère, combinez le résultat avec un diff caractère par caractère séparé ou un correcteur orthographique.
Relire les modifications de prompt et de configuration avant la fusionCollez le prompt précédent et le nouveau dans les deux panneaux pour voir exactement quelles lignes ont été ajoutées, supprimées ou réordonnées. C’est plus rapide que de relire le texte intégral lorsqu’un seul paramètre de température, message système ou bloc d’instructions a changé entre les versions. La vue au niveau de la ligne détecte les déplacements accidentels de sections qu’une comparaison par nombre de mots manquerait.
Auditer les diffs produits par l’algorithme Myers et le LCSSous le capot, le moteur de diff exécute l’algorithme Myers O(ND) sur la plus longue sous-séquence commune pour produire un script d’édition, puis applique un nettoyage sémantique de sorte que les décalages de frontière de mot (par exemple une phrase scindée sur deux lignes) se réduisent à une seule ligne modifiée plutôt qu’à deux blocs rouge/vert adjacents. Le résultat se lit comme un diff de ligne classique, mais la base LCS signifie que l’ensemble minimal d’éditions est ce qui apparaît dans la vue côte à côte.

Principe technique

Le diff au niveau des lignes repose sur le problème de la Plus Longue Sous-séquence Commune (LCS) : étant donné deux séquences de lignes A et B, trouver la plus longue séquence apparaissant dans les deux dans le même ordre relatif. Tout ce qui ne fait pas partie de la LCS est soit une insertion (présent dans B mais pas dans A), soit une suppression (présent dans A mais pas dans B), ce qui correspond exactement aux lignes rouges et vertes affichées dans la vue côte à côte. La table de programmation dynamique naïve de la LCS s'exécute en O(M * N) en temps et en espace, où M et N sont les nombres de lignes des deux entrées. En pratique, le moteur de diff utilise l'algorithme de Myers (Eugene Myers, 1986), qui résout le même problème en O((M + N) * D) temps, où D est la distance d'édition entre les deux fichiers. Pour deux fichiers en grande partie identiques, D est petit et Myers est considérablement plus rapide que la table complète de PD ; le backend de diff par défaut de Git, la vue de diff web de GitHub et la plupart des panneaux de diff des IDE utilisent Myers ou l'un de ses descendants (patience diff, histogram diff) pour cette raison. Le patience diff aligne d'abord sur les lignes uniques, ce qui produit des hunks plus lisibles lorsque des blocs de code ont été déplacés. La sortie est une séquence d'opérations égal/insertion/suppression rendue sous forme de diff unifié dans les outils CLI (avec des en-têtes de hunk @@ -m,n +p,q @@ et un seul préfixe +/- par ligne) ou sous forme de lignes colorées côte à côte dans une interface web. Les diffs au niveau du caractère ou du mot utilisent le même algorithme sur une séquence à granularité plus fine, souvent associé à la distance de Levenshtein (coûts d'insertion + suppression + substitution) lorsque les substitutions doivent être comptées comme une seule opération. La bibliothèque diff-match-patch de Neil Fraser est l'implémentation de référence pour les diffs au niveau du caractère côté web.

  • Base LCS : la Plus Longue Sous-séquence Commune des deux tableaux de lignes définit les lignes inchangées ; tout le reste est une insertion ou une suppression
  • Myers diff (1986) : O((M + N) * D) temps où D est la distance d'édition ; backend par défaut dans Git, GitHub et la plupart des vues de diff des IDE
  • PD naïve : O(M * N) en temps et espace — acceptable pour les petites entrées mais la mémoire quadratique la rend impraticable pour les grands fichiers
  • Patience diff : aligne d'abord sur les lignes uniques ; produit des hunks plus propres pour les blocs déplacés ou réordonnés
  • Formats de sortie : diff unifié avec en-têtes de hunk @@ -m,n +p,q @@ pour CLI ; lignes colorées côte à côte pour l'interface web
  • Granularité : les diffs ligne / mot / caractère appliquent le même algorithme à une segmentation différente de l'entrée
  • Distance de Levenshtein : comptabilise les insertions + suppressions + substitutions ; diff-match-patch est la bibliothèque web de référence

Exemples

Repérer un changement d'un mot dans un paragraphe

Original :
  The server starts on port 3000 by default.

Modifié :
  The server starts on port 8080 by default.

Résultat : 1 ligne modifiée (3000 -> 8080)

Comparer deux versions d'un bloc de configuration

Original :                      Modifié :
  timeout: 30                     timeout: 60
  retries: 3                      retries: 3
  debug: false                    debug: true
                                  log_level: info

Résultat : 2 lignes ajoutées, 2 lignes supprimées

Diff des notes de version avant/après

Supprimé (rouge) :
  - Fixed login redirect on Safari 16

Ajouté (vert) :
  - Fixed login redirect on Safari 16 and 17
  - Added dark mode preference sync

Résultat : 2 lignes ajoutées, 1 ligne supprimée

Détecter des clés JSON réordonnées

Original :                      Modifié :
  { "name": "alice",              { "id": 1,
    "id": 1,                        "name": "alice",
    "role": "admin" }               "role": "admin" }

Résultat : 2 lignes modifiées (ordre des clés différent, valeurs identiques)

FAQ

Quel type de diff affiche-t-il ?

Un diff au niveau ligne. La page montre deux panneaux côte à côte : les lignes supprimées surlignées en rouge à gauche, les lignes ajoutées surlignées en vert à droite. Les numéros de ligne aident à localiser les changements. La barre d'état indique le nombre de lignes ajoutées et supprimées.

Quel algorithme de diff est utilisé ?

La page utilise un algorithme de plus longue sous-séquence commune (LCS) pour calculer le script d'édition au niveau ligne. Pour des documents de taille classique, cela tourne en temps réel pendant que vous tapez. L'algorithme trouve la séquence la plus courte d'insertions et de suppressions pour transformer le texte de gauche en celui de droite.

Pourquoi le diff diffère-t-il de git diff ?

Git utilise sa propre implémentation avec des algorithmes configurables. Cette page utilise un diff JavaScript basé sur LCS qui s'exécute entièrement dans le navigateur. Le format de sortie et les frontières de hunk peuvent différer légèrement de git diff, mais la détection d'édition sous-jacente est correcte pour une comparaison textuelle au niveau ligne.

Puis-je faire un diff dans un seul paragraphe ou une phrase ?

Oui : collez chaque version dans un côté. La page offre aussi un surlignage au niveau caractère à l'intérieur des lignes modifiées, ce qui permet à un « renommer foo en bar » d'apparaître comme un remplacement inline plutôt que comme deux changements indépendants.

Ignore-t-il les espaces ?

Non. Le diff est sensible aux espaces par défaut. Les différences d'espacement (espaces en fin de ligne, lignes vides supplémentaires, fins de ligne différentes) apparaissent comme des changements.

Puis-je faire un diff structurel sur du JSON ou du XML ?

Le diff de texte pur est basé sur les lignes. Pour comparer du JSON par clé (clé « a » déplacée de la position 1 à 3 avec la même valeur = pas de changement), utilisez un outil de diff conscient du JSON (jsondiffpatch, json-diff). Cette page sert à la comparaison textuelle.

Mon texte est-il envoyé ?

Non. Le diff s'exécute dans votre navigateur. Les deux entrées sont traitées localement et ne sont pas transmises.