6

如果我有两个较长的字符串,VARCHAR2s,是否有一个简单的方法或算法可以复制或移植到 PL/SQL 来比较它们,插入标记(即,当在网页中呈现时,差异将被突出显示)。

例如:

BEGIN
  DBMS_OUTPUT.put_line(
    markup_differences
         (in_old     => 'Hello world, this is your captain speaking.'
         ,in_new     => 'Hello WORLD, this is not your captain.'
         ,in_preins  => '<ins>'
         ,in_postins => '</ins>'
         ,in_predel  => '<del>'
         ,in_postdel => '</del>'
         ));
END;

预期输出:

Hello <del>world</del><ins>WORLD</ins>, this is <ins>not</ins> your captain
<del>speaking</del>.

请注意,这表明“world”已更改为“WORLD”,“not”被插入,“speaking”被删除。

背景:我的目的是比较两个最相似的 HTML 片段,并用高亮标记它们以在浏览器中显示。性能将不是优先事项。这是一个一次性应用程序,所以我不追求完美的解决方案。即使有什么让我成为其中的一部分,总比没有好-而且我还没有向客户承诺任何事情:)

或者,我可以很容易地在我的 Apex 应用程序中加入一个简单的 Javascript 解决方案是可以接受的。

4

1 回答 1

2

John Resigs 博客上有一个非常简单的 js-diff 算法:http: //ejohn.org/projects/javascript-diff-algorithm/

也许这有帮助。

于 2012-09-20T08:18:01.183 回答