「
検索ヒット数表示(選択文字列)
」を編集中 (節単位)
ナビゲーションに移動
検索に移動
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、さまざまなメリットもあります。
スパム攻撃防止用のチェックです。 決して、ここには、値の入力は
しない
でください!
== 単独マクロバージョン == * アクティブなタブの文書内から選択範囲の文字列に一致するものをカウントします。 * ヒット件数はステータスバーに表示します。 : 選択範囲のある状態でマクロを手動で実行するか、「選択範囲が変更されたとき」のイベントマクロに設定して自動で実行させることができます。 ; 設定項目: '''''countMinimum''''' :Mery の検索ではつねにヒットした文字列の「先頭位置より1文字うしろ」から再検索しますが、このマクロではヒットした文字列の「末尾位置」から再検索できます。 :''e.g.''「あ<span style="background:#bfdfff;">ああ</span>ああ」5文字だけの文書で「<span style="background:#bfdfff;">ああ</span>」を検索した場合、このマクロでは "2件" とカウントさせることができますが、Mery の検索メソッド(次/前を検索)では "4回" ヒットします。<br> また、「あい<span style="background:#bfdfff;">あいあ</span>」5文字だけの文書で「<span style="background:#bfdfff;">あいあ</span>」を検索した場合は、このマクロでは "1件" とカウントさせることができます(Mery の検索メソッドでは "2回" ヒット)。 :→ 少なくカウントする設定にした場合、「何件目」かの表示は、上の例のような範囲選択をしている場合には不正確な値を返します。 ; 設定項目: '''''matchCase''''' : 文字列のヒット判定では「大文字と小文字を区別する」を適用するかどうかを選択できます。 ※ イベントマクロで利用する場合の処理速度を優先させるため、正規表現での検索処理が必要な「単語のみを検索する」は適用できません。 <span style="color:#c00;">※ イベントマクロで利用する場合は「'''遅延時間'''」を適宜調整しないと、大きな文書の編集のさいに動作が "もたつく" ことがあります。</span> [[#機能強化バージョン|機能強化バージョン]] を追加(2019/08/26 → 更新 2019/12/03) === ソースコード === 2019/12/03 更新 *全体のヒット件数のうしろに「何件目」のヒットかを追加 *ヒット数のカウント方法を設定変数で指定 <syntaxhighlight lang="javascript"> #title = "ヒット件数(選択文字列)" #tooltip = "検索ヒット数表示(選択範囲の文字列)" // #icon = "Mery用 マテリアルデザインっぽいアイコン.icl",19 /** * アクティブなタブの文書内から選択範囲の文字列に完全一致するものをカウントする。 * ヒット件数はステータスバーに表示する。 * * 選択範囲のある状態でマクロを手動で実行するか * イベント「選択範囲が変更されたとき」に設定して自動で実行させる。 */ var start = new Date(); // ■ 「あああああ」にたいして「ああ」のヒット数 (ture: 2 件、 false: 4 件) var countMinimum = true; // Mery の検索方式にあわせるなら false に // ■ 大文字と小文字を区別するか? (ture: する、 false: しない) var matchCase = false; // ■ ヒット数検索の所要時間を表示するか? var timerEnable = true; var d = editor.ActiveDocument, s = d.selection; var word = matchCase ? word : word.toLowerCase(); if ( word ) { Status = ""; var docu = matchCase ? d.Text : d.Text.toLowerCase(); var tPos = Math.min( s.GetActivePos(), s.GetAnchorPos() ); var count = 0, hit = 0, append = "*"; var next = countMinimum ? word.length : 1; var pos = docu.indexOf( word ); while ( pos >= 0 ) { count ++; if ( pos <= tPos ) { hit = count; if ( pos == tPos ) { append = ""; } } pos = docu.indexOf( word, pos + next ); } Status = ( " ヒット数:" + count + " 件" + " ( " + hit + " 件目" + append + " ) " ).replace( /(\d)(?=(?:\d{3})+(?!\d))/g, "$1," ); if ( timerEnable ) { Status += " [ " + ( ( new Date() - start ) / 1000 ).toFixed( 3 ) .replace( /\./, ". " ) + " 秒 ]"; } } </syntaxhighlight>
編集内容の要約:
MeryWikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MeryWiki:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の数式を計算してその答えを欄に入力してください (
ヘルプ
):
いちたすには =
キャンセル
編集ヘルプ
(新しいウィンドウで開きます)
スポンサーリンク
ナビゲーション メニュー
個人用ツール
ログインしていません
トーク
投稿記録
アカウント作成
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
編集
履歴表示
その他
検索
スポンサーリンク
スポンサーリンク
案内
メインページ
ヘルプ
よくある質問
マクロリファレンス
マクロライブラリ
プラグインライブラリ
構文ファイル
テーマ
寄付・開発支援
練習用ページ
開発室
開発者のブログ
ツール
スポンサーリンク