So sánh văn bản

So sánh hai đoạn văn bản và làm nổi bật phần thêm, xóa và thay đổi.

Văn bản gốc (Original)17 dòng
Văn bản đã sửa (Modified)
27 dòng
1-
function fetchUserData(userId) {
1+
interface UserData {
2-
// Legacy callback implementation
2+
id: string;
3-
console.log("Fetching user: " + userId);
3+
name: string;
4-
var url = "https://api.example.com/users/" + userId;
4+
email: string;
5+
}
6+
7+
export async function fetchUserData(userId: string): Promise<UserData | null> {
8+
// Modern async/await with type safety
9+
const url = `https://api.example.com/v2/users/${encodeURIComponent(userId)}`;
5
10
6-
return fetch(url)
11+
try {
7-
.then(function(response) {
12+
const response = await fetch(url, {
8-
if (response.status == 200) {
13+
headers: { "Accept": "application/json" },
9-
return response.json();
14+
cache: "no-store",
10-
}
11-
throw new Error("Failed to load user");
12-
})
13-
.catch(function(err) {
14-
console.error(err);
15-
return null;
16
});
15
});
16+
17+
if (!response.ok) {
18+
throw new Error(`HTTP error ${response.status}: ${response.statusText}`);
19+
}
20+
21+
const data: UserData = await response.json();
22+
return data;
23+
} catch (error) {
24+
console.error("fetchUserData failed:", error);
25+
return null;
26+
}
17
}
27
}
24 thêm14 xóa3 không đổi
•17 dòng gốc / 27 dòng mới
Từng từ
FAQ
Nhóm Văn bản (Text)•Tài liệu kỹ thuật & Đặc tả RFC

Tài liệu & Hướng dẫn chuyên sâu: So sánh văn bản & Tìm khác biệt (Text Diff Checker)

1. Tổng quan & Nguyên lý hoạt động

So sánh hai phiên bản văn bản (Text Diff) là nghiệp vụ cốt lõi trong kiểm soát phiên bản (Version Control - Git), đánh giá mã nguồn (Code Review) và đối soát tài liệu pháp lý. Tiện ích Text Diff Checker của Verdbench được xây dựng dựa trên thuật toán Eugene Myers Diff (thuật toán nền tảng của lệnh 'git diff'), cho phép bạn so sánh hai đoạn văn bản hoặc mã nguồn với độ chính xác tuyệt đối. Hỗ trợ hiển thị dạng phân chia hai cột (Split View) hoặc dạng hợp nhất (Unified View), cùng 3 mức độ chi tiết (so sánh theo dòng, theo từ hoặc theo từng ký tự).

2. Ưu thế kiến trúc & Tính năng nổi bật

Thuật toán Myers Diff chuẩn xác

Tìm kiếm tập hợp chỉnh sửa ngắn nhất (Shortest Edit Script), phát hiện tối ưu các đoạn thêm mới (ins), xóa bỏ (del) và thay đổi nội dung.

3 Mức độ chi tiết (Granularity)

Tùy chọn so sánh theo từng dòng (Lines - tối ưu cho code), theo từng từ (Words - tối ưu cho văn bản/bài viết) hoặc từng ký tự (Characters - tìm lỗi chính tả/dấu câu).

Bộ lọc thông minh & Xuất Patch

Bật tắt bỏ qua khoảng trắng (Ignore Whitespace) và phân biệt hoa/thường, hỗ trợ sao chép định dạng Unified Diff chuẩn để áp dụng với lệnh git apply.

3. Bảng so sánh các định dạng hiển thị Diff & Ứng dụng thực tế

Hướng dẫn lựa chọn chế độ hiển thị phù hợp với từng tác vụ phân tích văn bản:

Chế độ hiển thịĐặc điểm nhận diệnTrường hợp sử dụng tối ưuƯu điểm kỹ thuật
Split View (Song song 2 cột)Bản gốc ở cột trái, bản sửa đổi ở cột phải với số dòng đối sánh.Code Review, đối chiếu văn bản hợp đồng pháp lý, kiểm tra cấu trúc.Trực quan, dễ so sánh dòng tương ứng mà không bị đứt đoạn mạch đọc.
Unified View (Gộp chung)Hiển thị chung trong 1 cột, dòng xóa có dấu (-) đỏ, dòng thêm có dấu (+) xanh.Kiểm tra nhanh trên màn hình di động, xuất patch file cho Git.Tiết kiệm diện tích màn hình, tương thích chuẩn patch format của Linux/Git.
So sánh theo Dòng (Lines)Đánh dấu thay đổi nếu toàn bộ dòng có sự khác biệt.Mã nguồn phần mềm (Java, C#, TS, Python), cấu hình YAML, JSON.Chuẩn hóa theo logic dòng lệnh của các công cụ quản lý mã nguồn Git/SVN.
So sánh theo Từ/Ký tự (Words/Chars)Tô màu chính xác chỉ những từ hoặc ký tự bị thay đổi bên trong dòng.Biên tập tài liệu văn bản, sửa lỗi chính tả, kiểm tra thay đổi chuỗi hash/token.Chỉ ra chính xác vị trí thay đổi vi mô mà không cần quét lại cả câu dài.

4. Câu hỏi thường gặp (FAQ)

Giải đáp các thắc mắc phổ biến của lập trình viên khi sử dụng tiện ích So sánh văn bản & Tìm khác biệt (Text Diff Checker).

Được công bố năm 1986 bởi Eugene W. Myers, thuật toán biến bài toán so sánh hai chuỗi ký tự thành bài toán tìm đường đi ngắn nhất (Shortest Path) trên một lưới đồ thị biên tập (Edit Graph). Mỗi bước di chuyển sang ngang tương ứng với thao tác xóa (delete), di chuyển xuống dưới tương ứng với thao tác chèn (insert), và di chuyển chéo tương ứng với hai phần tử giống nhau. Thuật toán có độ phức tạp thời gian O(ND), tối ưu vượt trội cho các tệp tin có mức độ tương đồng cao.