Сравнение двух абзацев в Java

Я работаю над веб-приложением Java, в котором пользователь может вносить изменения в текстовую область. В этом он может написать один абзац, одно предложение. Итак, что я сейчас пытаюсь сделать, это разделить весь абзац разделителем точек. Как только это будет сделано, я хотел бы проверить, какие предложения изменились. В настоящее время я делаю это, используя цикл for, который не является точным, поскольку мне нужно, чтобы длина массива соответствовала Math.minimum обоих массивов String. Но это не работает, я получаю нулевую строку, измененную из него. Пожалуйста, дайте мне знать, что я делаю неправильно.

Код:

 String oldText = "";
 String newText = "";

  if(!(oldNotes.getNotetext().equals(newNotes.getNotetext()))){
            String[] strings = newNotes.getNotetext().split(".");
            if(strings.length>0){
                String[] oldNotesArray = oldNotes.getNotetext().split(".");
                if(oldNotesArray.length>0){
                    for(int i=0; i<Math.min(strings.length,oldNotesArray.length);i++){
                        if(!(strings[i].contains(oldNotesArray[i]))){
                            oldText += oldNotesArray[i];
                            newText += strings[i];
                        }
                    }
               }
                noteHistory.setNewText(newText);
                noteHistory.setHistoryText(oldText);
            } else {

                noteHistory.setNewText(newNotes.getNotetext());
                noteHistory.setHistoryText(oldNotes.getNotetext());
            }
        }

Так что в основном в обеих строках я бы хотел сохранить, какие предложения были изменены. Это все. Пожалуйста, дайте мне знать. Благодарю. Я просто использую разделитель точек для удобства, если есть какие-либо другие расширенные регулярные выражения, я не против их использовать. Большое спасибо.:-)

Изменить В соответствии с предложениями я пытаюсь использовать библиотеку Google diff-match-patch. Это то, что мне удалось найти, но до сих пор не удалось выделить различия. Я должен сохранить их в базе данных, поэтому мне придется пометить их, но у меня их пока нет. Мой код:

 diff_match_patch diffMatchPatch = new diff_match_patch();
                LinkedList<diff_match_patch.Diff> deltas = diffMatchPatch.diff_main(oldText,newText);
                for(diff_match_patch.Diff d : deltas){
                    if(d.operation== diff_match_patch.Operation.DELETE)
                        oldText += d.text;
                    else if(d.operation== diff_match_patch.Operation.INSERT)
                        newText += d.text;
                    else
                    {
                        oldText += d.text;
                        newText += d.text;
                    }
                }

                System.out.println(oldText);
                System.out.println(newText);

Теперь, когда я печатаю текст, я вижу целые 2 абзаца. Что я делаю неправильно?

1 ответ

Использование split("\\.") для получения точного массива строк, разделенных на String, и для сравнения, используя эту ссылку Google также взглянуть на этот художественный

Другие вопросы по тегам