6

2つの長い文字列VARCHAR2sがある場合、PL / SQLにコピーまたは移植してそれらを比較し、マークアップを挿入することができる簡単な方法またはアルゴリズムがあります(つまり、Webページでレンダリングされたときに違いが強調表示されます)。

例えば:

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」が削除されたことを示していることに注意してください。

背景:私の意図は、2つのほとんど類似したHTMLフラグメントを比較し、ブラウザーに表示するためにそれらをハイライトでマークアップすることです。パフォーマンスは優先されません。これは使い捨てアプリ用なので、完璧な解決策を求めているわけではありません。何かが私を途中で捕まえたとしても、何もないよりはましだろう-そして私はまだクライアントに何も約束していない:)

または、Apexアプリケーションに簡単に組み込むことができるJavascriptの単純なソリューションでもかまいません。

4

1 に答える 1

2

John Resigs ブログには、非常に単純な js-diff アルゴリズムがあります: http://ejohn.org/projects/javascript-diff-algorithm/

たぶんそれが役立ちます。

于 2012-09-20T08:18:01.183 に答える