突出显示两个字符串之间的差异

时间:2012-09-20 00:58:26

标签: oracle plsql string-comparison oracle11gr2

如果我有两个冗长的字符串,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>.

请注意,这表明“世界”已更改为“世界”,插入了“未”,并且删除了“发言”。

背景:我的目的是比较两个大部分相似的HTML片段,并用高亮标记它们以便在浏览器中显示。性能不是优先考虑的事项。这是一次性的应用程序,所以我不是一个完美的解决方案。即使某些事情让我变得更好,但事实并非如此 - 我还没有向客户承诺任何事情:)

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

1 个答案:

答案 0 :(得分:2)

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

也许这有帮助。