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

Jef*_*emp 5 oracle plsql string-comparison oracle11gr2

如果我有两个很长的字符串VARCHAR2,是否可以通过简单的方法或算法将其复制或移植到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;
Run Code Online (Sandbox Code Playgroud)

预期产量:

Hello <del>world</del><ins>WORLD</ins>, this is <ins>not</ins> your captain
<del>speaking</del>.
Run Code Online (Sandbox Code Playgroud)

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

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

另外,我可以轻松地将Javascript的简单解决方案轻松集成到Apex应用程序中。

rag*_*rag 3

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

也许这有帮助。