Java 如何查找已更改的子字符串

Java 如何查找已更改的子字符串,java,gwt,Java,Gwt,我正在GWT中创建一个应用程序,并每隔0.5秒扫描RichTextArea中的文本。oldText和newText之间的差异应记录在一个或多个ChangeEvents中 new InsertEvent(int position, String substring) new DeleteEvent(int position, int length) 找到这些字符串之间的一个或多个更改的最佳方法是什么?例如: 一件事 几件事 因为两次扫描之间的时间很短,所以不会有太大的差异。有人能给我一个反馈或建

我正在GWT中创建一个应用程序,并每隔0.5秒扫描RichTextArea中的文本。oldText和newText之间的差异应记录在一个或多个ChangeEvents中

new InsertEvent(int position, String substring)
new DeleteEvent(int position, int length)
找到这些字符串之间的一个或多个更改的最佳方法是什么?例如:

一件事

几件事


因为两次扫描之间的时间很短,所以不会有太大的差异。有人能给我一个反馈或建议我如何识别这些更改并适当地记录它们吗?

你的方法可能很容易冻结浏览器,尤其是长文本。如果没有浏览器事件,至少不要进行比较

我认为您可以考虑一种不同的方法:登录OnKyUp事件来跟踪插入,其中使用退格键和删除键是一种特殊情况,用于删除文本。您可能还需要跟踪文本选择以进行可能的删除,即,如果在选择文本时发生KeyUpEvent,则该文本可能已被删除退格、删除按钮或替换为新字符


和给你这些要求的人谈谈。试着说服他们,记录用户在保存文档时所做的更改就足够了。否则,您将面临严重降低用户体验的风险。

Wee!差分算法!有很多不同的实现,我想你应该看看它们……你有没有使用它们的经验,可以推荐一个合适的吗?我没有方向可以开始寻找;没有这方面的经验,但是,你只能靠自己;非常感谢。我想我会试试这种方法。这听起来既简单又高效:。
String oldText = "Hello world!";
String newText = "Hello woarld!";
ChangeEvent one = new InsertEvent(8,"a");
String oldText = "Hello world its me.";
String newText = "Hello world it's me, Tharmar !";
ChangeEvent several00 = new DeleteEvent(18,1);
ChangeEvent several01 = new InsertEvent(13,"'");
ChangeEvent several02 = new InsertEvent(18,", Tharmar !");