Сравните документ из двух слов в c # - PullRequest
0 голосов
/ 19 сентября 2018

У меня проблема.Мне нужно сравнить документ Word.Текст и формат в C #, и я нашел стороннюю библиотеку для просмотра и обработки документа, и это Devexpress.Поэтому я скачал пробную версию, чтобы проверить, можно ли решить проблему с помощью этого

Пример. У меня есть документ из двух слов

1: Это равно aтекстовый пример

Этот является не текстовым примером

В приведенном выше тексте разница только в слове , а не

Моя проблема в том, как я могу проверить разницу, включая формат?

Пока это мой код для перебора содержимого документа

public void CompareEpub(string word)
        {
            try
            {
                using (DevExpress.XtraRichEdit.RichEditDocumentServer srv = new DevExpress.XtraRichEdit.RichEditDocumentServer())
                {
                    srv.LoadDocument(word);
                    MyIterator visitor = new MyIterator();
                    DocumentIterator iterator = new DocumentIterator(srv.Document, true);
                    while (iterator.MoveNext())
                    {
                        iterator.Current.Accept(visitor);
                    }
                    foreach (var item in visitor.ListOfText)
                    {
                        Debug.WriteLine("text: " + item.Text + " b: " + item.IsBold + " u: " + item.IsUnderline + " i: " + item.IsUnderline);
                    }
                }

            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                Debug.WriteLine(ex.StackTrace);
                throw ex;
            }
        }


        public class MyIterator : DocumentVisitorBase
        {

            public List<Model.HtmlContent> ListOfText { get; }

            public MyIterator()
            {
                 ListOfText= new List<Model.HtmlContent>();
            }

            public override void Visit(DocumentText text)
            {
                var m = new Model.HtmlContent
                {
                    Text = text.Text,
                    IsBold = text.TextProperties.FontBold,
                    IsItalic = text.TextProperties.FontItalic,
                    IsUnderline = text.TextProperties.UnderlineWordsOnly
                };
                ListOfText.Add(m);
            }
        }

С кодом выше я могуперейти к тексту и его формату.Но как я могу использовать это для сравнения текста?

Если я собираюсь создать два списка для сравнения каждого документа.

Как я могу сравнить его?

Если я собираюсь сравнить текст с другим списком.Сравните это в цикле.

Я получу это, поскольку только два слова равны.

Может помочь мне в этом.Или просто представьте, как я могу заставить его работать.

Я не писал на форуме devexpress, потому что чувствую, что это проблема с тем, как я смогу это сделать.И не проблема с пробной версией или контролем, который я использовал.И я также узнал, что элемент управления не имеет функции для сравнения текста.Как тот, что с Microsoft Word.

Спасибо.

Обновление:

Желаемый вывод

Это - это (не) текстовый пример

Текст внутри () означает, что он не найден в первом документе Вывод, который я хочу, похож на выводDiff Match Patch https://github.com/pocketberserker/Diff.Match.Patch

Но я не могу реализовать код для проверки формата.

...