النص

Text Diff

مقارنة نصين سطرًا بسطر — ما تمت إضافته أو حذفه أو تغييره، مع تمييز على مستوى الكلمة في الأسطر التي تغيرت.


                        
                    

Text Diff compares two texts line by line and shows what was added, removed, or changed, with word-level highlighting inside changed lines — much like git diff, but without a command line.

How to use it

Common uses

Things to keep in mind

By default a whitespace-only change (like indentation) still counts as a difference, since it technically changes the line's content.

The diff compares lines by position, so adding or removing a single line near the top can shift how the rest of the text lines up.

مقالة عن هذه الأداة: Text Diff: كيف تعمل خوارزمية إيجاد الفروقات بين النصوص

الأسئلة الشائعة

كيف تتم المقارنة بين النصين؟

المقارنة تتم سطرًا بسطر، فتُحدَّد الأسطر المُضافة والمحذوفة والمُعدَّلة، وداخل كل سطر تغيّر يُضاف تمييز على مستوى الكلمة لإظهار الجزء الذي تغيّر بالضبط.

كيف تظهر الإضافات والحذف والتعديلات في النتيجة؟

الأسطر المُضافة والمحذوفة تُعرض بشكل منفصل ضمن ملخص الاختلافات، بينما الأسطر التي تغيّر جزء منها فقط تُعرض مع تمييز الكلمات المتغيرة داخلها دون باقي السطر.

هل النصان اللذان ألصقهما يُرسلان إلى أي خادم؟

لا، المقارنة تتم بالكامل داخل متصفحك عبر JavaScript، ولا يُرسل أي من النصين إلى خادم.

لماذا يظهر إدراج سطر واحد وكأنه غيّر كل الأسطر التالية؟

الخوارزمية لا تتعرف دائمًا بدقة على أن هذا إدراج فقط، لا استبدال جماعي — خصوصًا إذا كانت الأسطر المجاورة متشابهة فيما بينها. تحاول خوارزميات الديف الجيدة تقليل هذه الإيجابيات الخاطئة عبر البحث عن أطول تتابع مشترك (LCS)، لكن النتيجة ليست مثالية دائمًا.

هل تُؤخذ المسافات البيضاء بعين الاعتبار عند المقارنة؟

نعم، افتراضيًا يُعتبر تغيير المسافات البيضاء وحده (مثل الإزاحات) اختلافًا أيضًا، لأنه تقنيًا تغيير في محتوى السطر.

مقالات: النص

camelCase وsnake_case وkebab-case: متى نستخدم كل صيغة

لماذا يوجد camelCase وsnake_case وkebab-case، وأين يُستخدم كل منها عادة.

التعبيرات النمطية: الأساسيات وفخّ المطابقة الجشعة

الفرق بين المطابقة الجشعة والكسولة في التعبيرات النمطية ولماذا يهم ذلك عمليًا.

فرز الأسطر: لماذا يختلف الفرز الأبجدي عن العددي

لماذا يعامل الفرز الأبجدي الأرقام كنص، وكيف يختلف ذلك عن الفرز العددي.

الهروب بالأحرف: لماذا يختلف حسب السياق (JS وJSON والشِل والريجكس)

لماذا لا توجد قاعدة هروب واحدة تصلح لكل السياقات: JS وJSON والشِل والريجكس.

CRLF وLF: لماذا لا تزال نهايات الأسطر تسبّب مشاكل

من أين جاء الفرق بين CRLF وLF، ولماذا لا يزال يسبب مشاكل مع git والسكربتات.

عدّ الأحرف والكلمات: لماذا يعتمد على يونيكود

لماذا يمكن أن يتكون رمز تعبيري واحد ظاهريًا من عدة نقاط ترميز في يونيكود.

Lorem Ipsum: من أين جاء نص الحشو ولماذا لا معنى له

من أين جاء نص Lorem Ipsum فعليًا، ولماذا يُستخدم نص بلا معنى بدلاً من نص حقيقي.

Slugify: كيف يتحول العنوان إلى رابط صالح

كيف يتحول عنوان مقالة إلى رابط نظيف وقابل للقراءة بشرطات.

Markdown: لماذا أصبح معيار التوثيق

لماذا يظل Markdown مقروءًا حتى في صورته الخام، بخلاف HTML.

المسافات غير المرئية: لماذا تفشل مقارنة نصين متطابقين ظاهريًا

كيف يمكن لمسافة غير مرئية أن تجعل مقارنة نصين متطابقين ظاهريًا تفشل.

عكس النص: لماذا يفشل مع الرموز التعبيرية

لماذا يكسر عكس النص الساذج الرموز التعبيرية المركّبة من عدة نقاط ترميز.

تحليل تكرار النص: من سحابة الكلمات إلى كسر الشيفرات

كيف ساعد تحليل تكرار الحروف تاريخيًا في كسر شيفرات الاستبدال البسيطة.