Bỏ qua đến nội dung
LeedyBox
Ủng hộ

So sánh văn bản / mã

So sánh hai đoạn mã hoặc văn bản theo từng dòng, tô sáng các dòng được thêm và bị xóa.

Khác biệt

Hãy kiểm tra kết quả trước khi dùng. Công cụ được cung cấp nguyên trạng, không kèm bảo đảm, và kết quả có thể chưa đầy đủ hoặc không chính xác. Điều khoản dịch vụ

So sánh theo từng dòng. Khác biệt về khoảng trắng được tính là thay đổi, còn ký tự xuống dòng của Windows và Unix được xem là như nhau. Thay đổi bên trong một dòng không được tô sáng riêng.

Cách sử dụng

  1. Dán phiên bản trước vào "Văn bản gốc" và phiên bản sau vào "Văn bản đã sửa". Ban đầu, cả hai ô đều có sẵn một ví dụ JSON ngắn mà bạn có thể thay thế.
  2. Kết quả trong "Khác biệt" được cập nhật ngay khi bạn gõ hoặc dán. Không có nút so sánh nào cần nhấn.
  3. Đọc kết quả từ trên xuống dưới: dòng có dấu - trên nền đỏ đã bị xóa khỏi văn bản gốc, dòng có dấu + trên nền xanh lá được thêm vào văn bản đã sửa, còn các dòng chữ xám không có dấu thì giống nhau ở cả hai bản.
  4. Xem các con số nằm cùng hàng với "Khác biệt": chúng cho biết số dòng được thêm và bị xóa, và một dòng đã sửa được tính một lần là bị xóa và một lần là được thêm. Khi mọi dòng đều khớp, thông báo "Hai văn bản giống hệt nhau." sẽ hiện ở đó thay cho các con số.

Câu hỏi thường gặp

Văn bản tôi so sánh có bị tải lên hoặc lưu lại không?

Không. Việc so sánh chạy bằng JavaScript trên trình duyệt của bạn, và văn bản bạn dán không được gửi tới LeedyBox. Công cụ cũng không lưu văn bản đó.

Vì sao hai dòng trông giống nhau lại được hiển thị là bị xóa và được thêm?

Các dòng được so sánh chính xác đến từng ký tự, nên chỉ cần một dấu cách ở cuối dòng, một ký tự tab thay cho dấu cách, một dấu cách không ngắt dòng thay cho dấu cách thường hoặc một ký tự vô hình có độ rộng bằng 0 là đủ để chúng khác nhau. Nhiều chữ có dấu, trong đó có chữ tiếng Việt, cũng có thể được lưu ở hai dạng Unicode: một ký tự dựng sẵn, hoặc một chữ cái theo sau bởi dấu kết hợp; hai dạng này trông giống nhau nhưng không khớp. Chữ hoa và chữ thường cũng được tính là khác nhau. Ký tự xuống dòng của Windows và Unix được coi là như nhau, nên chúng không phải nguyên nhân.

Vì sao ở cuối lại có một dòng trống được thêm hoặc bị xóa?

Thường là do một văn bản kết thúc bằng dấu xuống dòng còn văn bản kia thì không. Văn bản được tách tại mỗi dấu xuống dòng, nên một dấu xuống dòng ở ngay cuối sẽ tạo thêm một dòng trống cuối cùng. Hãy cho hai văn bản kết thúc theo cùng một cách thì dòng thừa sẽ biến mất.

Dòng đã sửa và dòng bị di chuyển được hiển thị như thế nào?

Công cụ tìm số dòng nhiều nhất xuất hiện trong cả hai văn bản theo cùng thứ tự, rồi đánh dấu mọi dòng còn lại là bị xóa hoặc được thêm. Vì vậy, một dòng đã sửa hiện ra dưới dạng một dòng bị xóa cộng một dòng được thêm, thường là dòng bị xóa đứng trước; khi nhiều dòng liên tiếp bị sửa, các dòng bị xóa thường được gom lại và đứng trước. Việc di chuyển không được nhận diện riêng: một lần di chuyển hiện ra thành các dòng bị xóa ở một chỗ và được thêm ở chỗ khác. Khi một khối gồm nhiều dòng được di chuyển qua vài dòng khác, chính vài dòng đó có thể là những dòng được hiển thị là bị xóa và được thêm, còn bản thân khối kia vẫn không bị đánh dấu.

Tôi có thể dùng kết quả làm bản vá cho git apply hoặc lệnh patch không?

Không. Kết quả hiển thị mọi dòng, với + trước các dòng được thêm, - trước các dòng bị xóa và hai dấu cách trước các dòng không đổi. Khác với unified diff, kết quả không có tiêu đề hunk @@ kèm số dòng, cũng không có các dòng --- và +++ ghi tên tệp, nên git apply và lệnh patch không đọc được. Hãy dùng kết quả để xem lại thay đổi, và tạo tệp bản vá bằng git diff hoặc diff -u.

Tôi có thể so sánh văn bản dài đến mức nào?

Các dòng giống nhau ở đầu và ở cuối của cả hai văn bản không được tính vào giới hạn, và vẫn được hiển thị trong kết quả. Nếu số dòng còn lại của văn bản gốc nhân với số dòng còn lại của văn bản đã sửa lớn hơn 4.000.000, ví dụ 2.500 dòng so với 2.000 dòng, công cụ sẽ hiển thị thông báo thay vì kết quả. Khi đó, hãy so sánh văn bản theo từng phần nhỏ hơn. Dưới giới hạn này, văn bản dài vẫn có thể khiến trang phản hồi chậm khi bạn gõ, vì việc so sánh chạy lại sau mỗi thay đổi.

Vì sao JSON hoặc mã được định dạng lại hiển thị nhiều thay đổi đến vậy?

Công cụ so sánh văn bản chứ không so sánh ý nghĩa, nên thụt lề mới, khóa được sắp xếp lại hoặc một dòng bị tách làm hai đều được tính là thay đổi. Hãy định dạng cả hai phiên bản theo cùng một cách, với cùng kiểu thụt lề và thứ tự khóa, trước khi so sánh, để các khác biệt còn lại chủ yếu là thay đổi về nội dung.