2010-09-21 42 views
10

Tôi đang tìm một thuật toán khác để tạo ra các kết quả như trang sửa đổi chỉnh sửa của SO. Tôi đã nhiều hơn hoặc ít hơn chỉ bắt đầu tìm kiếm và tôi không phản đối để làm điều đó bản thân mình nhưng tôi không cần phải tái tạo lại bánh xe.Thuật toán C# Diff cho văn bản

Tôi sẽ sử dụng C# 4.0. Về cơ bản tôi sẽ có hai dây, và một cái cũ và một cái mới. Tôi muốn biết những gì đã thay đổi trong cái mới bằng cách làm nổi bật và tấn công.

Trả lời

3

Thường được triển khai bằng thuật toán longest common substring. This post sẽ được quan tâm.

+4

của nó không dài nhất chung ** chuỗi ** nhưng phổ biến dài nhất ** dãy **. Một chuỗi con luôn luôn liên tục nhưng một chuỗi không cần. Các thay đổi được thực hiện cho văn bản cũ để nhận văn bản mới không cần phải có các ký tự liên tiếp. – codaddict

+0

Đồng ý điều đó. Bạn cần phải phân loại giữa các vấn đề sau cùng phổ biến nhất dài nhất so với vấn đề chuỗi con thường gặp nhất. – quantity

5

Dựa trên thuật toán Longest common subsequence, thường được gọi là LCS.

LCS văn bản cũ và văn bản mới cung cấp phần không thay đổi. Vì vậy, các phần của văn bản cũ không phải là một phần của LCS là một phần đã được thay đổi.

Từ trang wiki trên:

Đó là một vấn đề khoa học máy tính cổ điển, cơ sở diff (một tập tin chương trình so sánh rằng kết quả đầu ra sự khác biệt giữa hai tập tin), và có ứng dụng trong tin sinh học.

4

Bạn có thể xem Menees Diff để biết ví dụ được viết bằng C#.

+0

liên kết chết, vui lòng sửa đổi. thx –

+1

Liên kết đã được sửa chữa. – cfeduke

Các vấn đề liên quan