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

提供: MeryWiki
ナビゲーションに移動 検索に移動
Sukemaru (トーク | 投稿記録)
ページを新規作成
 
Sukemaru (トーク | 投稿記録)
編集の要約なし
1行目: 1行目:
ks 氏の「[[includeライブラリ]]」の StringEx.js(count 関数)と「[[検索ヒット数表示]]」マクロをもとに作成。
ks 氏の「[[includeライブラリ]]」の StringEx.js(count 関数)と「[[検索ヒット数表示]]」マクロをもとに作成。


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


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


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


;ソースコード
※このマクロの実行にあたって include ライブラリは不要です。
 
※このマクロでは、イベントマクロで利用する場合の処理速度を優先させるために「[[検索ヒット数表示]]」(JScript) マクロのような正規表現検索には対応させていません。また、文字列のヒット判定では「大文字と小文字を区別する」が適用され、「単語のみを検索する」は適用されません。
 
オプション指定をつけてヒット数を調べたい場合は、「[[ポップアップメニューで検索先にジャンプ|ポップアップメニューで検索先にジャンプ]] 」マクロの '''include''' 版をご利用ください(イベントマクロにはできませんが)。
 
 
== ソースコード ==
<source lang="javascript">
<source lang="javascript">
#title = "ヒット件数(選択文字列)"
#title = "ヒット件数(選択文字列)"

2019年5月4日 (土) 22:30時点における版

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();
var word = document.selection.Text;
if ( word.length ) {
  var dText = document.Text;
  var pos = 0,  hit = 0;

  while ( pos >= 0 ) {
    pos = dText.indexOf( word, pos );
    if ( pos >= 0 ) {
      pos += word.length;
      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 );
}
スポンサーリンク