「
文字カウント
」を編集中
2019年6月16日 (日) 16:50時点における
Masme
(
トーク
|
投稿記録
)
による版
(マクロ更新。「文字種一覧」を「文字分類」に改称。)
(
差分
)
← 古い版
|
最新版
(
差分
) |
新しい版 →
(
差分
)
ナビゲーションに移動
検索に移動
警告: このページの古い版を編集しています。
公開すると、この版以降になされた変更がすべて失われます。
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、さまざまなメリットもあります。
スパム攻撃防止用のチェックです。 決して、ここには、値の入力は
しない
でください!
<div style="float:right">__TOC__</div> 選択範囲or文書全体の字数を算出するマクロです。 [[ファイル:CharacterCounter.png|border]] ==注意点== * 改行・半角文字・全角文字、すべて1文字とカウントします。 * 文字の分類は Shift_JIS (CP932) を基準にしています。 * Unicode 対応は一部に留まります。 ** サロゲートペアは、Mery では仕様上2文字とカウントされますが、このマクロでは1文字とカウントします。 ** 結合文字列や異体字セレクタなどには対応していません。他の文字と同じようにカウントされます。 * 文字数や文字種が増えるほど処理に時間がかかります(作者の環境では100万字の処理に約1.5秒かかりました)。<br>マクロ実行後、ステータスバーに処理に要した時間が表示されるので参考にしてください。 ==ソースコード== ダウンロード→ <b>[[メディア:文字カウント.zip|文字カウント.zip]]</b> * 拙作ですがアイコンファイル (文字カウント.ico) を同梱してあります。<br>Mery 2.4.7 以降の場合、マクロ (文字カウント.js) と同じフォルダに、<br>Mery 2.4.6 以前の場合、Mery.exe と同じフォルダに、<br>アイコンファイルを配置しておくとツールバーにアイコンが読み込まれます。 ==更新履歴== [[ファイル:文字カウント.zip]] * 2019/06/16 ** 容量は ADODB.Stream を利用して算出するようにした(マクロ「[[バイト数]]」の ks 氏版を参考)。 ** 文字分類を改訂。 *** 容量の定義を撤廃し、統合できる項目を統合。 *** 分類「階層」を削除。 *** 分類「空白」に「改行」を含めるようにした。 *** 分類「半カナ」を「半カナ」に改称。 *** 分類「MS依存」を追加。 *** CP932 未定義文字の分類を "総数,MS外字" → "総数,MS依存" に変更。 ** 結果表示を改訂。 *** 「段落」を復活。 *** 「仮名」を追加(仮名文字の数と、「字数」に占める割合を表示)。 *** 「サイズ」を追加(現在のエンコードでの容量を表示)。 *** 「UTF-16」「UTF-8」「SJIS」は非表示に変更。 *** 「原稿」「漢字」「UTF-7」「EUC」「JIS」を追加(非表示)。 ** アイコンのカラーパレットを調整。48x48の画像を一部変更(1と3)。 * 2018/08/04 ** Document.LineEnding が使える場合は使うようにした(Mery 2.6.10 以降)。 **: 改行コードの判別にクリップボードを使わずに済むため、難点が解消されます。 * 2017/06/25 ** アイコンファイルに24x24・32x32・48x48の画像を追加。 * 2015/12/26 ** アイコンの指定先を "My Macros\文字カウント.ico" → "文字カウント.ico" に変更。 * 2015/09/30 ** 改行コードを判別し、容量に反映するようにした。ただし、判別にクリップボードを使うため、難点があります。 *** 計測範囲に改行が存在しない場合は判別できない。 *** クリップボード履歴が重複してしまう。 ** 結果表示を改訂。 *** 「段落」は非表示に変更(後述の定義変更による)。 *** 「拡張」を「依存」に改称し、MS拡張 → MS拡張+MS外字 の数に変更。 *** 「サロゲート」を「ペア」に改称。 *** 「SJIS」の内容を「数値 bytes」→「数値 バイト」に変更。 *** 「UTF-16」の内容を「数値 bytes (BOM無)」→「数値+2(BOM) バイト」に変更。 *** 「UTF-8」の内容を「数値 bytes (BOM無)」→「数値+3(BOM) バイト」に変更。 ** 文字分類を改訂。 *** 分類「段落」の定義を変更。 /^(?= [^ \s])/gm → /^(?![ \t]*$)/gm *** 分類「英単」を「半英単」に改称し、定義を変更。 /\b(?=\w)/g → /(?=[!-~](?![!-~]))/g ***: Microsoft Word の文字カウント仕様(段落数、半角英数の単語数)に近づけた。<br>※仕様が不明なため、完全再現は目指していません。 *** 分類「会話」を削除。 *** ユーザー定義外字の分類を "総数,MS外字" → "総数,MS外字,全角" に変更。 *** 文字 U+0080 の分類を "総数,Uni" → "総数,MS外字" に変更。 *** Shift_JIS で保存すると似た字に化ける文字群を追加。 * 2014/02/17 ** アウトラインやアウトプットにフォーカスがある場合、カウントできないのを修正。 **: 文書の取得を Document → Editor.ActiveDocument に変更。 ** 分類「段落」の正規表現を短縮。 /^(?= [^ \s]+)/gm → /^(?= [^ \s])/gm ** 分類「会話」の定義を変更。 /^(?=「.+」$)/gm → /^(?=「.*」$)/gm * 2014/02/01 ** 初版公開。 ==文字分類== 現在の定義は下表のとおりです。分類は Shift_JIS (CP932) を基準にしています。 * <b style="background:#fcc;">赤地</b> の項目は、初期状態で結果表示される項目です。 * 「字数」は <b style="background:#fcc;">総数</b> − <b style="background:#ccf;">空白</b> で算出されます。 {|class="wikitable" !colspan="4"| 分類 (type) !! 正規表現 (re) !! 備考 |- !rowspan="2" style="background:#ccc;"| !colspan="3"| 半英単 | /(?=[!-~](?![!-~]))/g || ASCII文字の単語(半角英数の単語) |- !colspan="3" style="background:#fcc;"| 段落 | /^(?![ \t]*$)/gm || 空白行でない論理行 |- !rowspan="28" style="background:#fcc;"| 総数 |- !rowspan="3"| 制御 !rowspan="2" style="background:#ccf;"| 空白 !style="background:#fcc;"| 改行 | /\n/g || ASCII制御文字(改行) |- ! タブ | /\t/g || ASCII制御文字(水平タブ) |- !colspan="2" style="background:#ccc;"| | /[\u0000-\u001F\u007F]/g || 上記以外のASCII制御文字 |- !rowspan="6" style="background:#fcc;"| 半角 !style="background:#ccf;"| 空白 !! 半空 | / /g || ASCII文字(半角空白) |- ! 数字 !! 半数 | /[0-9]/g || ASCII文字(半角数字) |- ! 英字 !! 半英 | /[A-Za-z]/g || ASCII文字(半角英字) |- !rowspan="2"| 記号 !style="background:#ccc;"| | /[\u0020-\u007E]/g || 上記以外のASCII文字 |- !rowspan="2" style="background:#fcc;"| 半カナ | /[。「」、・ー゙゚]/g || |- !style="background:#fcc;"| 仮名 | /[ヲ-ッア-ン]/g || |- !rowspan="15" style="background:#fcc;"| 全角 !style="background:#ccf;"| 空白 !! 全空 | / /g || |- ! 数字 !! 全数 | /[0-9]/g || |- ! 英字 !! 全英 | /[A-Za-z]/g || |- !rowspan="2" style="background:#fcc;"| 仮名 ! かな | /[ぁ-ん]/g || ※SJISでは ゔ ゕ ゖ などは扱えない |- ! カナ | /[ァ-ヶ]/g || ※長音符や踊り字は記号扱い |- !colspan="2"| ギリシャ | /[Α-ΡΣ-Ωα-ρσ-ω]/g || ※SJISではシグマの語末形 ς は扱えない |- !colspan="2"| キリル | /[ЁА-Яа-яё]/g || ※Unicodeでは Ё ё の配置がJISと異なる |- !colspan="2"| 記号 | /[、。, (中略) ‡¶◯]/g || 記号 (146字) |- !colspan="2"| 罫線 | /[─│┌ (中略) ┥┸╂]/g || 罫線素片 (32字) |- !rowspan="3"| 漢字 ! 第一 | /[亜唖娃 (中略) 湾碗腕]/g || JIS第一水準漢字 (2965字) |- ! 第二 | /[弌丐丕 (中略) 瑤凜熙]/g || JIS第二水準漢字 (3390字) |- !rowspan="2"| MS拡張 |rowspan="2"| /[纊褜鍈 (中略) 鶴鸙黑]/g ||rowspan="2"| IBM拡張文字 (漢字360字) |- !rowspan="4" style="background:#fcc;"| MS依存 |- ! MS拡張 | /[①-⑳ (中略) ¦'"]/g || NEC特殊文字/IBM拡張文字 (記号等87字) |- ! MS外字 | /[\uE000-\uE757]/g || Microsoft ユーザー定義外字 (1880字) |- !style="background:#ccc;"| !style="background:#ccc;"| | /[\u0080\uF8F0-\uF8F3]/g || CP932 未定義文字 (5字) |- !rowspan="2" style="background:#fcc;"| Uni !colspan="2" style="background:#fcc;"| SP | /[\uD800-\uDBFF][\uDC00-\uDFFF]/g || サロゲートペア (U+10000~10FFFF) |- !colspan="2" style="background:#ccc;"| | /[\u0000-\uFFFF]/g || 上記以外の全文字 |} * <b style="background:#fcc;">Uni</b> に分類される文字は、Shift_JIS では正常に保存できません。保存を強行した場合、似た文字や <code>?</code> に化けます。 * <b style="background:#fcc;">MS依存</b> に分類される文字は、Shift_JIS では「環境依存文字」に該当します。 * 改行の定義が <code>/\n/g</code> なのは Mery の内部改行コードが [LF] で統一されているためです。 ===文字分類の仕様=== 文字分類は、ソースコードの最初あたりにある「■文字分類」以下で定義されています。 <source lang="javascript"> //■文字分類 {type:"総数,全角,カナ", re:/[ァ-ヶ]/g}, //一例 /* 以下略 */ </source> {|class="wikitable" ! re | カウントする対象を正規表現で記述します。<br>たとえば全角カタカナなら、<code style="color:#c00;">re:/[ァ-ヶ]/g</code> という具合です。<br>利用できる正規表現は、実行環境 JScript (JavaScript) の仕様に依存します。 |- ! type | 分類名です。複数設定する場合はコンマで区切ります。<br>たとえば、<code style="color:#c00;">type:"総数,全角,カナ"</code> という具合です。<br>この場合、type["総数"], type["全角"], type["カナ"] の各変数にカウントが加算されます。 |} 「文字カウント」マクロは、この定義を上から順に見て、該当する箇所を数えます。 ==結果表示について== 表示される結果は、ソースコードの最後のほうにある「ここから~ここまで結果表示の定義」の部分で定義されています。<br> ソースコードを単純化すると、以下のような処理になっています。 <source lang="javascript"> var result = (※出力用のテキストを生成); Alert(result); </source>
編集内容の要約:
MeryWikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MeryWiki:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の数式を計算してその答えを欄に入力してください (
ヘルプ
):
いちたすには =
キャンセル
編集ヘルプ
(新しいウィンドウで開きます)
スポンサーリンク
ナビゲーション メニュー
個人用ツール
ログインしていません
トーク
投稿記録
アカウント作成
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
編集
履歴表示
その他
検索
スポンサーリンク
スポンサーリンク
案内
メインページ
ヘルプ
よくある質問
マクロリファレンス
マクロライブラリ
プラグインライブラリ
構文ファイル
テーマ
寄付・開発支援
練習用ページ
開発室
開発者のブログ
ツール
スポンサーリンク