Metin Karşılaştırma (Fark Bulucu)

İki metni yapıştırın; hangi satırların eklendiğini, silindiğini ve aynı kaldığını satır satır, renkli olarak görün.

1.146 görüntülenme

Karşılaştırma Nasıl Çalışır

Araç, iki metni satırlara böler ve Git ile kod düzenleyicilerin "diff" görünümünde kullandığı temel mantıkla aynı olan En Uzun Ortak Alt Dizi (LCS) algoritmasını çalıştırır. Satırları konuma göre eşleştirmek yerine (1. satır - 1. satır, 2. satır - 2. satır gibi), LCS her iki belgede de aynı sırayla geçen en uzun satır dizisini bulur. Bu ortak dizinin içindeki her şey değişmedi olarak işaretlenir; özgün metinde geriye kalan fazlalık silindi, düzenlenmiş metinde geriye kalan fazlalık ise eklendi olarak işaretlenir.

Bu ayrım önemlidir çünkü basit, konuma dayalı bir karşılaştırma, belgenin başına tek bir satır eklendiği ya da silindiği anda bozulur — o satırdan sonraki her şey farklı görünür, oysa gerçekte tek bir satır değişmiştir. Somut örnek: özgün metin "A / B / C / D" iken düzenlenmiş metin "A / X / B / C / D" ise, saf satır-satır karşılaştırma B, C ve D'yi de değişmiş sayar (çünkü bir konum aşağı kaymışlardır). LCS ise A, B, C, D'nin iki metinde de hâlâ aynı göreli sırada geçtiğini fark eder ve doğru şekilde yalnızca tek bir ekleme — yeni X satırı — bildirir, gerisini değişmedi olarak işaretler.

Bilinmesi Gerekenler

  • Satır bazlı, kelime bazlı değil: karşılaştırma tüm satırlar üzerinden çalışır. Uzun bir satırın içindeki tek bir kelime değişse bile o satırın tamamı bir silinen + bir eklenen satır olarak görünür — kod ve belge karşılaştırmasında sonucu taranabilir tutmak için standart yaklaşım budur.
  • Boşluk ve büyük/küçük harf sayılır: sondaki bir boşluk veya farklı bir harf büyüklüğü, aslında aynı olan iki satırı farklı gösterir — istemiyorsanız önce metni normalleştirin.
  • Yer değiştiren içerik doğru eşleşir: LCS konumlara değil en uzun ortak diziye baktığı için, iç sırası korunarak başka bir yere taşınan bir paragraf, sil-ekle çifti yerine değişmedi olarak tanınır.
  • Büyük belgeler sorun değil: algoritma binlerce satırda rahat ölçeklenir; çok büyük dosyalarda (on binlerce satır) tarayıcının hizalamayı hesaplaması biraz daha uzun sürebilir ama iş her zaman cihazınızda kalır — herhangi bir yükleme beklemesi yoktur.

Aynı teknik, programlama dışında da "değişiklik izleme" tarzı incelemenin temelini oluşturur: bir sözleşme maddesinin iki taslağını karşılaştıran bir hukuk ekibi, bir bölümde ortak yazarın tam olarak neyi yeniden yazdığını kontrol eden bir editör veya aynı belgenin iki yerelleştirilmiş sürümü arasında hangi cümlelerin değiştiğini doğrulayan bir çevirmen için de kullanışlıdır. Algoritma yalnızca satırların sırasını önemser, ne anlama geldiklerini değil; bu yüzden kaynak kod, ayar dosyaları, şiir veya düz metin olarak dışa aktarılmış bir e-tablo üzerinde de aynı şekilde iyi çalışır.

Sıkça Sorulan Sorular

Kelime bazlı mı, satır bazlı mı karşılaştırıyor?

Satır bazlı — belge ve kod için standart olan budur, çünkü çoğu düzenleyici ve sürüm kontrol aracının bir dosyayı ele alış biçimiyle örtüşür. Bu yüzden değiştirilmiş bir satır, kelime düzeyinde dağınık vurgular yerine bir silinen + bir eklenen satır olarak görünür; sonuç uzun belgelerde bile taranabilir kalır.

Boyut sınırı var mı?

Algoritma binlerce satırı rahat kaldırır ve bu, çoğu sözleşme, makale ve kaynak dosyasını kapsar. Çok büyük dosyalarda (on binlerce satır) tarayıcının hizalamayı hesaplaması biraz daha uzun sürebilir — iş her durumda tamamen cihazınızda kalır, yani beklenecek bir yükleme gecikmesi yoktur.

Belgelerim yükleniyor mu?

Hayır. İki metin de JavaScript ile yerel olarak tarayıcınızda karşılaştırılır; sayfayı kapattığınız veya yenilediğiniz an hem girdi hem de sonuç kaybolur — hiçbir şey saklanmaz veya iletilmez.

Taşınan veya yer değiştiren satırlar nasıl ele alınıyor?

LCS algoritması konuma değil iki metinde de ortak olan en uzun diziye baktığı için, başka bir yere taşınsa bile iç sırası korunan bir paragraf, yanlış bir sil-ekle çifti yerine değişmedi olarak gösterilir. Yalnızca içeriği veya göreli konumu gerçekten farklı olan satırlar işaretlenir.

Tek bir kelimeyi değiştirmek neden iki satırı değişmiş gösteriyor?

Fark, tek tek kelimeleri değil tüm satırları karşılaştırır. Bir satırın içindeki tek kelimeyi düzenlemek, o satırın tamamını bir silinen (eski hâli) ve bir eklenen (yeni hâli) satır olarak saydırır — Git veya kod inceleme araçlarında görülenle aynı davranıştır ve satır içindeki değişiklik ne kadar küçük olursa olsun görsel sonucu tutarlı tutar.

Yorumlar

Henüz yorum yok — ilk yorumu siz yazın!

Benzer Araçlar