「文字カウント」の版間の差分

提供:MeryWiki
ナビゲーションに移動 検索に移動
(不具合修正。分類「段落」と「会話」の正規表現を変更。)
(注意点を追記(改行は1文字とカウント))
7行目: 7行目:


==注意点==
==注意点==
* 改行はすべて CR+LF として計算します(Mery の仕様上、改行コードを判別できないため)。
* 改行は1文字とカウントし、CR+LF として容量を計算します(Mery の仕様上、改行コードを判別できないため)。  
* Shift_JIS は Microsoft コードページ 932 (CP932) / Windows-31J の仕様に準拠しています。
* Shift_JIS は Microsoft コードページ 932 (CP932) / Windows-31J の仕様に準拠しています。
* Unicode 対応は一部に留まります。
* Unicode 対応は一部に留まります。

2014年3月14日 (金) 19:38時点における版

選択範囲or文書全体の字数・容量を算出するマクロです。
Shift_JIS/UTF-16 (BOM無)/UTF-8 (BOM無) でのバイト数を一度に確認できます。

CharacterCounter.png

注意点

  • 改行は1文字とカウントし、CR+LF として容量を計算します(Mery の仕様上、改行コードを判別できないため)。
  • Shift_JIS は Microsoft コードページ 932 (CP932) / Windows-31J の仕様に準拠しています。
  • Unicode 対応は一部に留まります。
    • サロゲートペアは、Mery では仕様上2文字とカウントされますが、このマクロでは1文字とカウントします。
    • 結合文字や異体字セレクタ、零幅空白や Unicode 制御文字 (LRO/RLO など) は考慮していません。これらは Mery と同じ仕様でカウントされます。
  • カウントする文字数や文字種が増えるほど処理に時間がかかります(作者の環境では、100万字の処理に約1秒かかりました)。
    ステータスバーに処理に要した時間が表示されますので参考にしてください。

ソースコード

ダウンロード→ 文字カウント.zip

  • 拙作ですがアイコンファイルを同梱してあります。
    Mery の My Macros フォルダにアイコンファイル (文字カウント.ico) を配置すれば、ツールバーにアイコンが読み込まれます。

更新履歴

ファイル:文字カウント.zip

  • 2014/02/17
    • アウトラインやアウトプットにフォーカスがある場合、結果が 0 になってしまう不具合を修正。
      Document ではなく Editor.ActiveDocument を利用して文書を取得するようにした。
    • 分類「段落」の正規表現を変更。 /^(?= [^ \s]+)/gm → /^(?= [^ \s])/gm
    • 分類「会話」の正規表現を変更。 /^(?=「.+」$)/gm → /^(?=「.*」$)/gm
  • 2014/02/01
    • 初版公開。

文字種別一覧

デフォルトで定義されている文字種は下表のとおりです。分類は Shift_JIS (CP932) を基準にしています。

 赤地  の項目は、デフォルトで表示結果に採用されている項目です。
「総字数」= 総数 、「字数」=総数 から  改行  空白  を引いた数、となっています。

分類
type
該当文字 /正規表現/
re
容量 (byte)
sjis/utf16/utf8
備考
階層 /^(?=\.)/gm ピリオドで始まる行 (階層付きテキスト)
段落 /^(?= [^ \s])/gm 全角空白1字下げで始まる行
会話 /^(?=「.*」$)/gm 「 で始まり 」 で終わる行 (会話文)
英単 /\b(?=\w)/g 0-9A-Za-z_ で構成される単語
総数
制御 改行 CR+LF
CR または LF
2 / 4 / 2
1 / 2 / 1
※仕様上、改行は CR+LF とみなす
ASCII制御文字
空白 タブ /\t/g 1 / 2 / 1 ASCII制御文字
/[\x00-\x1F\x7F]/g 1 / 2 / 1 上記以外のASCII制御文字
半角 空白 半空 / /g 1 / 2 / 1 ASCII文字
数字 半数 /[0-9]/g 1 / 2 / 1 ASCII文字
英字 半英 /[A-Za-z]/g 1 / 2 / 1 ASCII文字
記号 /[!-/:-@[-`{-~]/g 1 / 2 / 1 空白・英数以外のASCII文字
半カナ /[。「」、・ー゙゚]/g 1 / 2 / 3
仮名 /[ヲ-ッア-ン]/g 1 / 2 / 3
全角 空白 全空 / /g 2 / 2 / 3
数字 全数 /[0-9]/g 2 / 2 / 3
英字 全英 /[A-Za-z]/g 2 / 2 / 3
仮名 かな /[ぁ-ん]/g 2 / 2 / 3
カナ /[ァ-ヶ]/g 2 / 2 / 3
ギリシャ /[Α-ΡΣ-Ωα-ρσ-ω]/g 2 / 2 / 2 ※SJISではシグマの語末形 ς を扱えない
キリル /[ЁА-Яа-яё]/g 2 / 2 / 2 ※Unicodeでは Ё ё の配置が異なる
記号 /[´¨±×÷°§¶]/g 2 / 2 / 2 UTF-8で2バイトの全角記号(8字)
/[、。, (中略) †‡◯]/g 2 / 2 / 3 UTF-8で3バイトの全角記号(138字)
罫線 /[─│┌ (中略) ┥┸╂]/g 2 / 2 / 3 罫線素片(32字)
漢字 第一 /[亜唖娃 (中略) 湾碗腕]/g 2 / 2 / 3 JIS第一水準漢字(2965字)
第二 /[弌丐丕 (中略) 瑤凜熙]/g 2 / 2 / 3 JIS第二水準漢字(3390字)
MS拡張 /[纊褜鍈 (中略) 鶴鸙黑]/g 2 / 2 / 3 IBM拡張文字(漢字360字)
/[①-⑳Ⅰ (中略) ¦'"]/g 2 / 2 / 3 NEC特殊/IBM拡張文字(記号等87字)
MS外字 /[\uE000-\uE757]/g 2 / 2 / 3 Microsoft ユーザー定義外字領域(1880字)
/[\uF8F0-\uF8F3]/g 1 / 2 / 3 ※SJIS保存時、0xA0/FD/FE/FF に変換される
Uni /[¢£«¬¯µ·¸»]/g 2 / 2 / 2 ※SJIS保存時、よく似た全角文字に変換される
/ゔ/g 2 / 2 / 3 ※SJIS保存時、全角カナの ヴ に変換される
/[\u0080-\u07FF]/g 1? / 2 / 2 上記以外のUTF-8で2バイトの文字
SP /[\uD800-\uDBFF][\uDC00-\uDFFF]/g 2? / 4 / 4 サロゲートペア (U+10000-10FFFF)
/[\u0800-\uFFFF]/g 1? / 2 / 3 上記以外のUTF-8で3バイトの文字
  • Shift_JIS では、 MS拡張  に分類される文字は「機種依存文字」に該当するため、Windows 以外では文字化けする可能性があります。
  • Shift_JIS では、 Uni  に分類される文字を正常に保存することができません。保存を強行した場合は、よく似た文字や ? の文字に変換されます。

文字種別について

文字種の分類は、ソースコードの最初のほうにある「検索リスト」の部分で定義されています。

var list = [
{sjis:数値,utf16:数値,utf8:数値, type:"文字列", re:正規表現},
 中略
];
key(添字) value(値) 説明
re 正規表現
RegExp
カウントしたい文字を正規表現で記述します。
たとえば全角カタカナなら、re:/[ァ-ヶ]/g という具合です。
利用できる正規表現は、実行環境 JScript (JavaScript) の仕様に依存します。
type 文字列
String
文字種の分類名です。複数設定したい場合はカンマで区切ります。
たとえば、type:"総数,全角,カナ" という具合です。
この場合、type["総数"], type["全角"], type["カナ"] の変数にカウントが加算されます。
sjis
utf16
utf8
数値
Number
Shift_JIS/UTF-16/UTF-8 での1文字 (1カウント) あたりの容量(バイト)設定です。
省略した場合は 0 とみなされます。

表示結果について

表示される結果は、ソースコードの最後のほうにある「ここから~ここまで結果の定義」の部分で定義されています。
ソースコードを単純化すると、以下のような処理になっています。

var result = (出力用のテキストを生成);
Alert(result);
スポンサーリンク