「
検索ヒット数表示(選択文字列)
」を編集中
2019年5月10日 (金) 21:56時点における
Sukemaru
(
トーク
|
投稿記録
)
による版
(
→
ソースコード
)
(
差分
)
← 古い版
|
最新版
(
差分
) |
新しい版 →
(
差分
)
ナビゲーションに移動
検索に移動
警告: このページの古い版を編集しています。
公開すると、この版以降になされた変更がすべて失われます。
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、さまざまなメリットもあります。
スパム攻撃防止用のチェックです。 決して、ここには、値の入力は
しない
でください!
ks 氏の「[[includeライブラリ]]」の StringEx.js(count 関数)と「[[検索ヒット数表示]]」マクロをもとに作成。 * アクティブなタブの文書内から選択範囲の文字列に'''完全一致'''するものをカウントする。 * ヒット件数はステータスバーに表示する。 選択範囲のある状態でマクロを手動で実行するか、「選択範囲が変更されたとき」のイベントマクロに設定して自動で実行させるのがよろしいかと。 なお、このマクロと Mery 標準の検索メソッドとでは、ヒット数のカウントの仕方が異なります。 :''e.g.''「<u>あああああ</u>」5文字だけの文書で「<u>ああ</u>」を検索した場合、このマクロでは "2件" とカウントしますが、Mery の検索メソッド(次を検索)では "4回" ヒットします。 ※このマクロの実行にあたって include ライブラリは不要です。 ※このマクロでは、イベントマクロで利用する場合の処理速度を優先させるために「[[検索ヒット数表示]]」(JScript) マクロのような正規表現検索には対応させていません。また、文字列のヒット判定では「大文字と小文字を区別する」が適用され、「単語のみを検索する」は適用されません。 ※イベントマクロで利用する場合は「遅延時間」を適宜調整しないと、大きな文書の編集のさいに動作がもたつくことがあります。 オプション指定をつけてヒット数を調べたい場合は、「[[ポップアップメニューで検索先にジャンプ|ポップアップメニューで検索先にジャンプ]] 」マクロの '''include''' 版をご利用ください(イベントマクロにはできませんが)。 == ソースコード == <source lang="javascript"> #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; // 大文字/小文字の区別なしにするなら、以下2行をアンコメント // word = document.selection.Text.toLowerCase(); // dText = dText.toLowerCase(); 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 ); } </source>
編集内容の要約:
MeryWikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MeryWiki:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の数式を計算してその答えを欄に入力してください (
ヘルプ
):
いちたすには =
キャンセル
編集ヘルプ
(新しいウィンドウで開きます)
スポンサーリンク
ナビゲーション メニュー
個人用ツール
ログインしていません
トーク
投稿記録
アカウント作成
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
編集
履歴表示
その他
検索
スポンサーリンク
スポンサーリンク
案内
メインページ
ヘルプ
よくある質問
マクロリファレンス
マクロライブラリ
プラグインライブラリ
構文ファイル
テーマ
寄付・開発支援
練習用ページ
開発室
開発者のブログ
ツール
スポンサーリンク