Diff Checker

Diff Checker

Bandingkan dua teks atau kod dengan sorotan peringkat baris dan perkataan. Sebelah-menyebelah atau unified, abai ruang putih, abai huruf besar/kecil — sepenuhnya dalam pelayar anda.

Tidak. Keseluruhan alat ialah JavaScript yang berjalan di dalam halaman ini. Algoritma diff (longest-common-subsequence) berjalan pada CPU anda dan hasilnya dipaparkan terus ke DOM. Buka DevTools → Network dan perhatikan — tiada permintaan dihantar semasa diff dijalankan. Selamat untuk menampal kod dalaman, data pelanggan, draf kontrak, atau apa-apa sahaja yang anda tidak mahu alat pelayan log.

Pertama, kami memecahkan kedua-dua input kepada baris dan menjalankan algoritma LCS (longest common subsequence). Baris yang sepadan di kedua-dua belah ditandakan sebagai sama. Baris yang tidak sepadan dipasangkan ke dalam baris 'perubahan' apabila tambahan muncul bersebelahan dengan pembuangan. Bagi setiap perubahan berpasangan, kami menjalankan LCS kedua pada perkataan baris itu (dipecahkan oleh ruang putih) supaya hanya perkataan yang benar-benar disunting menyala merah/hijau — bukan keseluruhan baris.

Mengapa iKit Diff Checker

Medan diff teks yang bersih dan pantas tanpa iklan, popup atau penjejak pihak ketiga — dibina untuk pembangun, penulis dan sesiapa sahaja yang perlu mengesan perubahan.

Paparan sebelah-menyebelah + unified

Tukar antara split (dua lajur, rasa klasik IDE) dan unified (satu lajur dengan penanda +/−) dengan satu klik. Kedua-dua paparan memaparkan nombor baris dan menyerlahkan setiap perubahan secara sebaris.

Sorotan peringkat perkataan

Apabila dua baris berubah, kami menjalankan diff peringkat perkataan kedua supaya hanya perbezaan sebenar yang menyala — bukan keseluruhan baris. Lebih mudah mengesan satu kesilapan ejaan dalam baris 200 aksara.

Abai ruang putih + abai huruf besar/kecil

Togolkan kepekaan ruang putih dan huruf untuk menapis perubahan kosmetik (inden yang diformat semula, perubahan huruf besar) dan fokus pada suntingan sebenar.

Privasi sejak rekaan

Kedua-dua teks kekal dalam tab pelayar anda. Algoritma diff berjalan secara tempatan dalam JavaScript. Boleh disahkan dalam DevTools → Network: tiada permintaan dihantar semasa anda menaip.

Statistik + salin

Lihat berapa banyak baris yang ditambah, dibuang dan diubah suai sekali pandang. Satu klik menyalin diff ke papan keratan anda untuk ditampal ke ulasan kod atau mesej commit.

Berfungsi luar talian

Selepas halaman dimuatkan, setiap bait dikira secara tempatan. Berfungsi dalam pesawat, di sebalik tembok api korporat, atau tanpa rangkaian langsung — berguna untuk ulasan kod sulit.

Bagaimana diff checker sebenarnya berfungsi

Matematik di sebaliknya lebih tua daripada web — algoritma 1965 dipanggil LCS, ditambah penambahbaikan 1986 oleh Eugene Myers.

  1. 1

    Pecahkan kepada baris

    Kedua-dua input dipecahkan pada \n (atau \r\n). Setiap baris menjadi token. Kami membandingkan token — bukan aksara — kerana kebanyakan suntingan dalam kod atau dokumen dunia sebenar menambah, membuang atau mengubah suai keseluruhan baris.

  2. 2

    Kira LCS

    Longest Common Subsequence ialah set baris terbesar yang muncul dalam susunan yang sama dalam kedua-dua input. Kami mengisi jadual DP bermula dari bawah-kanan; setiap sel menyimpan panjang LCS dari kedudukan itu hingga ke hujung. Ini mengambil masa dan ingatan O(m × n).

  3. 3

    Berjalan kembali untuk menerbitkan operasi

    Bermula dari atas-kiri jadual, kami berjalan ke hadapan: jika dua baris semasa sepadan, keluarkan sama; jika tidak, pilih arah (kanan atau bawah) yang mengekalkan panjang LCS, mengeluarkan buang atau masuk. Hasilnya ialah urutan operasi yang menukar Asal kepada Diubah suai.

  4. 4

    Diff peringkat perkataan dalam pasangan yang berubah

    Apabila pembuangan diikuti oleh masukan, kami memasangkan mereka sebagai baris perubahan. Untuk menyerlahkan hanya bahagian yang berbeza dalam baris itu, kami menjalankan algoritma LCS yang sama kali kedua pada perkataan setiap belah, dipecahkan pada sempadan ruang putih.

Tugas diff yang biasa

Situasi sebenar di mana anda akan mencapai diff checker.

Menyemak PR sebelum membuat ulasan

Paparan diff GitHub adalah hebat, tetapi kadangkala anda mahu melihat hanya perubahan substantif tanpa hingar pemformat. Tampal kedua-dua versi, togolkan Abai ruang putih, dan format semula kosmetik akan hilang — hanya menyisakan suntingan logik.

Membandingkan dua draf kontrak

Peguam dan pasukan operasi sering perlu tahu apa yang berubah antara v1 dan v2 sesuatu kontrak. Tampal kedua-duanya, dapatkan diff berwarna dengan sorotan peringkat perkataan — tiada Word, tiada Track Changes, tiada muat naik terma sulit ke pelayan pihak ketiga.

Menyemak apa yang sebenarnya disunting oleh skrip

Menjalankan regex sed/awk/Python ke atas fail konfigurasi? Tampal yang asal dan hasilnya di sini untuk mengesahkan skrip menyunting hanya apa yang anda jangkakan. Sorotan peringkat aksara menangkap suntingan tersesat yang imbasan visual pantas terlepas.

Mengesan kesilapan ejaan dalam teks terjemahan

Pasangan terjemahan (sumber lwn terjemahan, atau dua terjemahan sumber yang sama) — diff peringkat perkataan menjadikannya remeh untuk mencari perkataan yang hilang, frasa berganda, atau tanda baca terbalik yang terlepas oleh pembaca pruf.

Mengapa diff tempatan penting

Teks yang anda bandingkan biasanya peribadi: kod daripada repo dalaman, draf kontrak, eksport data pelanggan, atau salinan produk yang belum dikeluarkan. Menampalnya ke pelayan orang asing mencipta jejak kertas yang tidak anda kawal. Diff checker iKit ialah JavaScript yang sudah dimuatkan dalam tab pelayar anda — perbandingan berjalan pada CPU anda dan tidak pernah menyentuh soket rangkaian.

  • Sifar permintaan rangkaian semasa diff — boleh disahkan dalam DevTools → Network.
  • Input kekal dalam ingatan pelayar; dibersihkan apabila Kosongkan ditekan atau halaman dimuat semula.
  • Selamat untuk kod dalaman, dokumen dilindungi NDA, transkrip sokongan pelanggan, dan apa-apa yang dilindungi oleh dasar pemastautinan data.

Related guides

Deep-dive tutorials and tool comparisons from the iKit blog.

Soalan Lazim

Adakah ini selamat? Adakah teks saya dimuat naik?

Tidak. Keseluruhan alat ialah JavaScript yang berjalan di dalam halaman ini. Algoritma diff (longest-common-subsequence) berjalan pada CPU anda dan hasilnya dipaparkan terus ke DOM. Buka DevTools → Network dan perhatikan — tiada permintaan dihantar semasa diff dijalankan. Selamat untuk menampal kod dalaman, data pelanggan, draf kontrak, atau apa-apa sahaja yang anda tidak mahu alat pelayan log.

Bagaimanakah sorotan peringkat baris + perkataan berfungsi?

Pertama, kami memecahkan kedua-dua input kepada baris dan menjalankan algoritma LCS (longest common subsequence). Baris yang sepadan di kedua-dua belah ditandakan sebagai sama. Baris yang tidak sepadan dipasangkan ke dalam baris 'perubahan' apabila tambahan muncul bersebelahan dengan pembuangan. Bagi setiap perubahan berpasangan, kami menjalankan LCS kedua pada perkataan baris itu (dipecahkan oleh ruang putih) supaya hanya perkataan yang benar-benar disunting menyala merah/hijau — bukan keseluruhan baris.

Apakah perbezaan antara paparan Split dan Unified?

Paparan Split menunjukkan kedua-dua teks sebelah-menyebelah dengan nombor baris berpasangan — lebih dekat dengan paparan diff dalam IDE (VS Code, JetBrains). Paparan Unified menunjukkan satu lajur dengan baris awalan +/− — lebih dekat dengan apa yang `git diff` cetak. Pilih mana-mana yang sesuai dengan aliran kerja anda; kedua-duanya memaparkan data yang sama.

Mengapa 'abai ruang putih' membantu?

Memformat semula kod (menjalankan Prettier, menukar tab/ruang, menormalkan hujung baris) menambah hingar visual yang menutup perubahan sebenar. Menogol 'Abai ruang putih' meruntuhkan urutan ruang/tab kepada satu ruang dan memangkas hujung baris sebelum diff — supaya anda hanya melihat suntingan bermakna, bukan yang kosmetik.

Apakah input terbesar yang boleh saya diff dalam pelayar?

Algoritma LCS menggunakan ingatan O(m × n) di mana m dan n ialah bilangan baris di setiap belah. iKit mengehadkan perbandingan pada ~4 juta sel (≈16 MB), yang dengan selesa mengendalikan beberapa ribu baris berbanding beberapa ribu baris. Untuk diff yang lebih besar (longgokan pangkalan data penuh, log fail penuh), gunakan alat CLI seperti `diff` atau `git diff --no-index` — yang menggunakan algoritma lebih bijak (Myers diff) yang berskala kepada berjuta-juta baris.