ข้อความ

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 ในเบราว์เซอร์ของคุณ ข้อความไม่ถูกอัปโหลดไปที่ใดเลย

ทำไมการแทรกบรรทัดเดียวถึงทำให้บรรทัดถัดไปทั้งหมดแสดงว่าเปลี่ยนแปลง?

อัลกอริทึมไม่ได้เดาได้เสมอว่านี่คือการแทรกจริง ๆ ไม่ใช่การแทนที่จำนวนมาก โดยเฉพาะเมื่อบรรทัดรอบข้างมีเนื้อหาคล้ายกัน อัลกอริทึม diff ที่ดีพยายามลด false positive แบบนี้ด้วยการหา longest common subsequence แต่ก็ไม่สมบูรณ์แบบเสมอไป

การเปรียบเทียบนับช่องว่างด้วยหรือไม่?

ใช่ ตามค่าเริ่มต้น การเปลี่ยนแปลงเฉพาะช่องว่าง (เช่น การเยื้องบรรทัด) ก็ถูกทำเครื่องหมายว่าเป็นความแตกต่างด้วย เพราะในทางเทคนิคถือเป็นการเปลี่ยนแปลงเนื้อหาของบรรทัด

บทความ: ข้อความ

camelCase, snake_case, kebab-case: ควรใช้รูปแบบไหนเมื่อไหร่

เหตุใดจึงมี camelCase, snake_case และ kebab-case และแต่ละแบบมักใช้ที่ไหน

Regular Expression: พื้นฐานและกับดักของการจับคู่แบบโลภ

ความแตกต่างระหว่างการจับคู่แบบโลภและแบบขี้เกียจใน regex และเหตุใดจึงสำคัญในทางปฏิบัติ

การเรียงบรรทัด: ทำไมการเรียงตามตัวอักษรถึงต่างจากการเรียงตามตัวเลข

เหตุใดการเรียงตามตัวอักษรจึงปฏิบัติต่อตัวเลขเหมือนข้อความ และต่างจากการเรียงตามตัวเลขอย่างไร

การ Escape สตริง: ทำไมกฎถึงต่างกันใน JS, JSON, shell และ regex

เหตุใดจึงไม่มีกฎการ escape เดียวที่ใช้ได้ทุกที่ — JS, JSON, shell และ regex ต่างก็มีกฎของตัวเอง

CRLF กับ LF: ทำไมการขึ้นบรรทัดใหม่ยังคงสร้างปัญหา

ความแตกต่างระหว่าง CRLF กับ LF มาจากไหน และเหตุใดยังคงสร้างปัญหากับ git และสคริปต์

การนับตัวอักษรและคำ: ทำไม Unicode ทำให้ซับซ้อน

เหตุใดอิโมจิหนึ่งตัวที่เห็นด้วยตาจึงอาจประกอบด้วย code point หลายตัวใน Unicode

Lorem Ipsum: ข้อความหลอกนี้มาจากไหนและทำไมไม่มีความหมาย

ข้อความ Lorem Ipsum มาจากไหนจริง ๆ และเหตุใดจึงใช้ข้อความไร้ความหมายแทนข้อความจริง

Slugify: หัวข้อกลายเป็น URL ที่ใช้งานได้อย่างไร

หัวข้อบทความกลายเป็น URL ที่สะอาดและอ่านง่ายด้วยเครื่องหมายขีดได้อย่างไร

Markdown: ทำไมจึงกลายเป็นมาตรฐานของเอกสาร

เหตุใด Markdown จึงยังอ่านง่ายแม้ในรูปแบบดิบ ต่างจาก HTML

ช่องว่างที่มองไม่เห็น: ทำไมการเปรียบเทียบข้อความที่ดูเหมือนกันจึงล้มเหลว

ช่องว่างที่มองไม่เห็นเพียงตัวเดียวทำให้การเปรียบเทียบข้อความสองชิ้นที่ดูเหมือนกันล้มเหลวได้อย่างไร

การกลับข้อความ: ทำไมจึงพังกับอิโมจิ

เหตุใดการกลับข้อความแบบง่ายจึงทำให้อิโมจิที่ประกอบจาก code point หลายตัวพังไป

การวิเคราะห์ความถี่ข้อความ: จาก word cloud สู่การถอดรหัส

การวิเคราะห์ความถี่ตัวอักษรช่วยถอดรหัสแบบแทนที่อักษรง่าย ๆ ในอดีตได้อย่างไร