「検索ヒット数表示(選択文字列)」の版間の差分

提供:MeryWiki
ナビゲーションに移動 検索に移動
編集の要約なし
編集の要約なし
35行目: 35行目:
Status = "";
Status = "";
var word = document.selection.Text;
var word = document.selection.Text;
if ( word.length ) {
if ( word ) {
  var len = word.length;
   var dText = document.Text;
   var dText = document.Text;
   var pos = 0,  hit = 0;
   var pos = 0,  hit = 0;
   while ( pos >= 0 ) {
   while ( pos >= 0 ) {
     pos = dText.indexOf( word, pos );
     pos = dText.indexOf( word, pos );
     if ( pos >= 0 ) {
     if ( pos >= 0 ) {
       pos += word.length;
       pos += len;
       hit ++;
       hit ++;
     }
     }
   }
   }
   var SeparateNum = function( num ) {
   var SeparateNum = function( num ) {
     return num.toString().replace( /(\d)(?=(?:\d{3})+$)/g, "$1," );
     return num.toString().replace( /(\d)(?=(?:\d{3})+$)/g, "$1," );
   }
   }
   Status = " ヒット数:" + SeparateNum( hit ) + " 件";
   Status = " ヒット数:" + SeparateNum( hit ) + " 件";
   var TimerElapsed = function( end, start ) {
   var TimerElapsed = function( end, start ) {
     var elapsedSec = ( ( end - start ) / 1000 ).toFixed( 3 );
     var elapsedSec = ( ( end - start ) / 1000 ).toFixed( 3 );
     return "  [ " + elapsedSec.replace( /\./, ". " ) + " 秒 ]";
     return "  [ " + elapsedSec.replace( /\./, ". " ) + " 秒 ]";
   }
   }
   // 検索所要時間の表示が不要なら以下の1行をコメントアウトせよ
   // 検索所要時間が不要なら以下の1行をコメントアウトせよ
   Status += TimerElapsed( new Date(), timerStart );
   Status += TimerElapsed( new Date(), timerStart );
}
}
</source>
</source>

2019年5月5日 (日) 02:51時点における版

ks 氏の「includeライブラリ」の StringEx.js(count 関数)と「検索ヒット数表示」マクロをもとに作成。

  • アクティブなタブの文書内から選択範囲の文字列に完全一致するものをカウントする。
  • ヒット件数はステータスバーに表示する。

選択範囲のある状態でマクロを手動で実行するか、「選択範囲が変更されたとき」のイベントマクロに設定して自動で実行させるのがよろしいかと。


※このマクロの実行にあたって include ライブラリは不要です。

※このマクロでは、イベントマクロで利用する場合の処理速度を優先させるために「検索ヒット数表示」(JScript) マクロのような正規表現検索には対応させていません。また、文字列のヒット判定では「大文字と小文字を区別する」が適用され、「単語のみを検索する」は適用されません。

オプション指定をつけてヒット数を調べたい場合は、「ポップアップメニューで検索先にジャンプ 」マクロの include 版をご利用ください(イベントマクロにはできませんが)。


ソースコード

#title = "ヒット件数(選択文字列)"
#tooltip = "検索ヒット数表示(選択範囲の文字列)"
// #icon = "Mery用 マテリアルデザインっぽいアイコン.icl",19

/**
 * アクティブなタブの文書内から選択範囲の文字列に完全一致するものをカウントする。
 * ヒット件数はステータスバーに表示する。
 * 
 * 選択範囲のある状態でマクロを手動で実行するか
 * イベント「選択範囲が変更されたとき」に設定して自動で実行させる。
 * 
 * ※ ks 氏の『includeライブラリ』より
 *     >> include/StringEx.js >> String.prototype.count() 
 *   のコードを拝借した。
 */

var timerStart = new Date();
Status = "";
var word = document.selection.Text;
if ( word ) {
  var len = word.length;
  var dText = document.Text;
  var pos = 0,  hit = 0;
  while ( pos >= 0 ) {
    pos = dText.indexOf( word, pos );
    if ( pos >= 0 ) {
      pos += len;
      hit ++;
    }
  }
  var SeparateNum = function( num ) {
    return num.toString().replace( /(\d)(?=(?:\d{3})+$)/g, "$1," );
  }
  Status = " ヒット数:" + SeparateNum( hit ) + " 件";
  var TimerElapsed = function( end, start ) {
    var elapsedSec = ( ( end - start ) / 1000 ).toFixed( 3 );
    return "  [ " + elapsedSec.replace( /\./, ". " ) + " 秒 ]";
  }
  // 検索所要時間が不要なら以下の1行をコメントアウトせよ
  Status += TimerElapsed( new Date(), timerStart );
}
スポンサーリンク