เปรียบเทียบข้อความ / โค้ด
เปรียบเทียบโค้ดหรือข้อความสองชุดทีละบรรทัด พร้อมไฮไลต์บรรทัดที่เพิ่มและลบ
วิธีใช้
- วางฉบับก่อนหน้าลงใน “ข้อความต้นฉบับ” และฉบับที่ใหม่กว่าลงใน “ข้อความที่แก้ไข” ทั้งสองช่องมีตัวอย่าง JSON สั้น ๆ ใส่ไว้ตั้งแต่แรก ซึ่งคุณแทนที่ได้
- ผลลัพธ์ใน “ความแตกต่าง” จะอัปเดตขณะที่คุณพิมพ์หรือวาง โดยไม่มีปุ่มเปรียบเทียบให้กด
- อ่านผลลัพธ์จากบนลงล่าง บรรทัดที่มีเครื่องหมาย - บนพื้นสีแดงคือบรรทัดที่ถูกลบออกจากต้นฉบับ บรรทัดที่มีเครื่องหมาย + บนพื้นสีเขียวคือบรรทัดที่เพิ่มเข้ามาในข้อความที่แก้ไข และบรรทัดตัวอักษรสีเทาที่ไม่มีเครื่องหมายคือบรรทัดที่เหมือนกันทั้งสองฉบับ
- ดูตัวเลขในแถวเดียวกับ “ความแตกต่าง” ซึ่งบอกจำนวนบรรทัดที่เพิ่มและลบ บรรทัดที่ถูกแก้ไขจะนับเป็นบรรทัดที่ลบหนึ่งครั้งและบรรทัดที่เพิ่มหนึ่งครั้ง เมื่อทุกบรรทัดตรงกัน ตำแหน่งนั้นจะแสดง “ข้อความทั้งสองเหมือนกัน” แทน
คำถามที่พบบ่อย
ข้อความที่ฉันเปรียบเทียบถูกอัปโหลดหรือบันทึกไว้หรือไม่
ไม่ การเปรียบเทียบทำงานในเบราว์เซอร์ของคุณด้วย JavaScript และข้อความที่คุณวางจะไม่ถูกส่งไปยัง LeedyBox เครื่องมือนี้ก็ไม่ได้บันทึกข้อความไว้เช่นกัน
ทำไมสองบรรทัดที่ดูเหมือนกันจึงแสดงเป็นบรรทัดที่ลบและบรรทัดที่เพิ่ม
บรรทัดจะถูกเปรียบเทียบแบบตรงกันทุกอักขระ ช่องว่างท้ายบรรทัด แท็บแทนช่องว่าง ช่องว่างแบบไม่ตัดบรรทัด (non-breaking space) แทนช่องว่างปกติ หรืออักขระความกว้างศูนย์ (zero-width) ที่มองไม่เห็น ก็เพียงพอที่จะทำให้บรรทัดต่างกัน ตัวอักษรที่มีเครื่องหมายเสริมหลายตัวยังเก็บได้สองรูปแบบใน Unicode คือเป็นอักขระเดียว หรือเป็นตัวอักษรตามด้วยเครื่องหมายเสริมแบบผสม ซึ่งดูเหมือนกันแต่ไม่ตรงกัน ข้อความภาษาไทยก็เช่นกัน สระอำที่พิมพ์เป็น ำ ตัวเดียว กับที่พิมพ์เป็น ํ ตามด้วย า หรือสระกับวรรณยุกต์ที่พิมพ์สลับลำดับกัน อาจดูเหมือนกันแต่ไม่ตรงกัน ตัวพิมพ์ใหญ่และตัวพิมพ์เล็กก็นับว่าต่างกันด้วย ส่วนการขึ้นบรรทัดใหม่แบบ Windows และ Unix ถือว่าเหมือนกัน จึงไม่ใช่สาเหตุ
ทำไมจึงมีบรรทัดว่างที่ท้ายข้อความแสดงเป็นบรรทัดที่เพิ่มหรือลบ
ส่วนใหญ่เป็นเพราะข้อความหนึ่งลงท้ายด้วยการขึ้นบรรทัดใหม่ แต่อีกข้อความไม่ได้ลงท้ายแบบนั้น ข้อความจะถูกแบ่งที่การขึ้นบรรทัดใหม่ทุกตำแหน่ง การขึ้นบรรทัดใหม่ที่ท้ายสุดจึงเพิ่มบรรทัดว่างเป็นบรรทัดสุดท้าย หากทำให้ข้อความทั้งสองลงท้ายแบบเดียวกัน บรรทัดส่วนเกินนี้จะหายไป
บรรทัดที่ถูกแก้ไขและถูกย้ายแสดงอย่างไร
เครื่องมือจะหาจำนวนบรรทัดที่มากที่สุดซึ่งปรากฏในข้อความทั้งสองโดยเรียงลำดับเดียวกัน แล้วระบุบรรทัดอื่นทั้งหมดว่าถูกลบหรือถูกเพิ่ม บรรทัดที่ถูกแก้ไขจึงแสดงเป็นบรรทัดที่ลบหนึ่งบรรทัดและบรรทัดที่เพิ่มหนึ่งบรรทัด โดยปกติบรรทัดที่ลบจะมาก่อน และเมื่อแก้ไขหลายบรรทัดติดกัน บรรทัดที่ลบมักจะมาก่อนเป็นกลุ่ม เครื่องมือไม่ได้ตรวจจับการย้ายโดยตรง การย้ายจะแสดงเป็นบรรทัดที่ถูกลบในตำแหน่งหนึ่งและถูกเพิ่มในอีกตำแหน่งหนึ่ง เมื่อบล็อกที่มีหลายบรรทัดถูกย้ายข้ามบรรทัดอื่นเพียงไม่กี่บรรทัด บรรทัดไม่กี่บรรทัดนั้นอาจเป็นฝ่ายที่แสดงเป็นบรรทัดที่ลบและเพิ่ม ส่วนตัวบล็อกเองไม่ถูกทำเครื่องหมาย
ใช้ผลลัพธ์เป็นแพตช์สำหรับ git apply หรือคำสั่ง patch ได้หรือไม่
ไม่ได้ ผลลัพธ์แสดงทุกบรรทัด โดยมี + นำหน้าบรรทัดที่เพิ่ม - นำหน้าบรรทัดที่ลบ และช่องว่างสองช่องนำหน้าบรรทัดที่ไม่เปลี่ยน ต่างจาก unified diff ตรงที่ไม่มีส่วนหัว hunk แบบ @@ พร้อมหมายเลขบรรทัด และไม่มีบรรทัด --- กับ +++ ที่ระบุชื่อไฟล์ git apply และคำสั่ง patch จึงอ่านไม่ได้ ให้ใช้ผลลัพธ์นี้เพื่อตรวจทานการเปลี่ยนแปลง และสร้างไฟล์แพตช์ด้วย git diff หรือ diff -u
เปรียบเทียบข้อความได้มากเท่าใด
บรรทัดที่ตรงกันที่ส่วนต้นและส่วนท้ายของข้อความทั้งสองไม่นับรวมในขีดจำกัด และยังแสดงในผลลัพธ์ตามปกติ หากจำนวนบรรทัดที่เหลือในต้นฉบับคูณกับจำนวนบรรทัดที่เหลือในข้อความที่แก้ไขมากกว่า 4,000,000 เช่น 2,500 บรรทัดเทียบกับ 2,000 บรรทัด เครื่องมือจะแสดงข้อความแจ้งแทนผลลัพธ์ ในกรณีนี้ให้เปรียบเทียบทีละส่วนที่เล็กลง แม้ไม่เกินขีดจำกัด ข้อความที่ยาวก็ยังอาจทำให้หน้าเว็บตอบสนองช้าขณะพิมพ์ เพราะการเปรียบเทียบจะทำงานใหม่ทุกครั้งที่มีการเปลี่ยนแปลง
ทำไม JSON หรือโค้ดที่จัดรูปแบบใหม่จึงแสดงการเปลี่ยนแปลงจำนวนมาก
เครื่องมือเปรียบเทียบข้อความ ไม่ใช่ความหมาย การเยื้องแบบใหม่ การสลับลำดับคีย์ หรือการแบ่งบรรทัดหนึ่งเป็นสองบรรทัดจึงนับเป็นการเปลี่ยนแปลงทั้งหมด ให้จัดรูปแบบทั้งสองฉบับแบบเดียวกัน ทั้งการเยื้องและลำดับคีย์ ก่อนเปรียบเทียบ เพื่อให้ความแตกต่างที่เหลือส่วนใหญ่เป็นการเปลี่ยนแปลงของเนื้อหา