リストの差分を抽出するには?

ショコラ
ショコラ

リストの差分を抽出するには?

HTAアプリでキメマス。
①diff.hta アプリをダウンロードする。
②リスト1とリスト2に比較するリストをペーストする。
③DIFFボタンを押してキメマス。

もっさん先輩
もっさん先輩

こちらのリンクを右クリックしてファイルをダウンロードできます。

https://answorz.com/4858/diff.hta
  1. diff.hta をダブルクリックで実行します。
diff.hta を実行したところ
  1. リスト1とリスト2にリストを入力して「リスト1基準でリスト2と比較する」ボタンを押します。
比較したところ

スクリプトの説明

HTAアプリはただの html ですので、スクリプトをメモ帳にドラッグ&ドロップして中身を確認いただけます。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta charset="utf-8">
<title>DIFF</title>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.1/dist/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fomantic-ui@2.9.0/dist/semantic.min.css">
<script src="https://cdn.jsdelivr.net/npm/fomantic-ui@2.9.0/dist/semantic.min.js"></script>
<hta:application id="hta"/>
<script>
$(function(){
  window.resizeTo(800,640);
  $('#diff1,#diff2').on('click',function(){
    var ar1 = $('#text1').val().split(/\n/);
    var ar2 = $('#text2').val().split(/\n/);
    if ('diff2' == $(this).attr('id')) {
       var tmp = ar1;
       ar1 = ar2;
       ar2 = tmp;
    }
    $('#text3').val('');
    ar1.forEach(function(elem){
      if (-1 == ar2.indexOf(elem)) {
        $('#text3').val( $('#text3').val() + elem + "\n" );
      }
    });
    var ct = ($('#text3').val().match(new RegExp('\n','g')) || [] ).length;
    alert("差分は"+ct+"個です。");
    return false;
  });
});
</script>
</head>
<body>
<form class="ui form">
  <div class="ui basic segment">
    <div class="ui three column grid">
      <div class="column">
        <textarea id="text1" cols="30" rows="30" class="textarea" placeholder="リスト1"></textarea>
      </div>
      <div class="column">
        <textarea id="text2" cols="30" rows="30" class="textarea" placeholder="リスト2"></textarea>
      </div>
      <div class="column">
        <textarea id="text3" cols="30" rows="30" class="textarea" placeholder="差分"></textarea>
      </div>
    </div>
    <div class="ui fluid buttons">
      <button class="ui positive button" id="diff1">リスト1基準でリスト2と比較する</button>
      <div class="or"></div>
      <button class="ui positive button" id="diff2">リスト2基準でリスト1と比較する</button>
    </div>
  </div>
</form>
</body>
</html>
Scroll to Top