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

提供:MeryWiki
ナビゲーションに移動 検索に移動
(注意点を追記(改行は1文字とカウント))
(マクロ更新)
2行目: 2行目:


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


[[ファイル:CharacterCounter.png|border]]
[[ファイル:CharacterCounter.png|border]]


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


==ソースコード==
==ソースコード==
ダウンロード→ [[メディア:文字カウント.zip|文字カウント.zip]]
ダウンロード→ <b>[[メディア:文字カウント.zip|文字カウント.zip]]</b>


* 拙作ですがアイコンファイルを同梱してあります。<br>Mery の My Macros フォルダにアイコンファイル (文字カウント.ico) を配置すれば、ツールバーにアイコンが読み込まれます。
* 拙作ですがアイコンファイルを同梱してあります。<br>Mery の My Macros フォルダにアイコンファイル (文字カウント.ico) を配置すれば、ツールバーにアイコンが読み込まれます。
21行目: 21行目:
==更新履歴==
==更新履歴==
[[ファイル:文字カウント.zip]]
[[ファイル:文字カウント.zip]]
* <b>2014/02/17</b>
* 2015/09/30
** アウトラインやアウトプットにフォーカスがある場合、結果が 0 になってしまう不具合を修正。<br>Document ではなく Editor.ActiveDocument を利用して文書を取得するようにした。
** 改行コードを判別し、容量に反映するようにした。ただし、判別にクリップボードを使う仕様上、下記の難点があります。
** 分類「段落」の正規表現を変更。 /^(?= [^ \s]<span style="background:#fcc;">+</span>)/gm → /^(?= [^ \s])/gm
*** 対象範囲に改行が存在しない場合は判別できない。
** 分類「会話」の正規表現を変更。 /^(?=「.<span style="background:#fcc;">+</span>」$)/gm → /^(?=「.<span style="background:#fcc;">*</span>」$)/gm
*** クリップボードの内容を記憶・復元する過程でクリップボード履歴が1つ増えてしまう。
* <b>2014/02/01</b>
** 結果表示の内容を改訂。
*** 「段落」はデフォルトで非表示とした。(後述の定義変更を受けて)
*** 「拡張」を「依存」に改称し、MS拡張 → MS拡張+MS外字 の字数に変更。
*** 「サロゲート」を「ペア」に改称。
*** SJIS の容量表記を「数値 bytes」→「数値 バイト」に変更。
*** UTF-16 の容量表記を「数値 bytes (BOM無)」→「数値+2(BOM) バイト」に変更。
*** UTF-8 の容量表記を「数値 bytes (BOM無)」→「数値+3(BOM) バイト」に変更。
** 分類「会話」を削除。(なんとなく用意してみた、程度の存在理由だったので)
** 分類「段落」の正規表現を変更。 /^(?= [^ \s])/gm → /^(?![  \t]*$)/gm
**: Microsoft Word の文字カウント仕様(段落数)に近づけた。
** 分類「英単」を「半英単」に改称し、正規表現を変更。 /\b(?=\w)/g → /(?=[!-~](?![!-~]))/g
**: Microsoft Word の文字カウント仕様(半角英数の単語数)に少しだけ近づけた。※仕様が不詳かつ複雑なため、完全再現は目指していません。
** 「MS外字」の分類(type)を "総数,MS外字" → "総数,MS外字,全角" に変更。
** 文字 U+0080 の分類(type)を "総数,Uni" → "総数,MS外字" に修正。
** 文字種一覧に「SJIS保存時、よく似た半角文字に変換される文字」を追加。
* 2014/02/17
** アウトラインやアウトプットにフォーカスがある場合、結果が 0 になってしまうのを修正。
**: Document ではなく Editor.ActiveDocument を利用してテキストを取得するようにした。
** 分類「段落」の正規表現を変更。 /^(?= [^ \s]+)/gm → /^(?= [^ \s])/gm
** 分類「会話」の正規表現を変更。 /^(?=「.+」$)/gm → /^(?=「.*」$)/gm
* 2014/02/01
** 初版公開。
** 初版公開。


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


<b style="background:#fcc;"> 赤地 </b> の項目は、デフォルトで表示結果に採用されている項目です。<br>
<b style="background:#fcc;"> 赤地 </b> の項目は、デフォルトで結果表示に採用されている項目です。ただし下記の項目は、計算により求められています。
「総字数」=<b style="background:#fcc;"> 総数 </b>、「字数」=<b>総数</b> から <b style="background:#fcc;"> 改行 </b> <b style="background:#ccf;"> 空白 </b> を引いた数、となっています。
* 「字数」=<b style="background:#fcc;"> 総数 </b><b style="background:#fcc;"> 改行 </b><b style="background:#ccf;"> 空白 </b> ※総字数から改行・空白を引いた数
* 「依存」=<b style="background:#fcc;"> MS拡張 </b><b style="background:#fcc;"> MS外字 </b>


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


* Shift_JIS では、<b style="background:#fcc;"> MS拡張 </b> に分類される文字は「機種依存文字」に該当するため、Windows 以外では文字化けする可能性があります。
==文字種について==
* Shift_JIS では、<b style="background:#fcc;"> Uni </b> に分類される文字を正常に保存することができません。保存を強行した場合は、よく似た文字や ? の文字に変換されます。
文字種の分類は、ソースコードの最初のほうにある「文字種の定義」の部分で定義されています。
 
==文字種別について==
文字種の分類は、ソースコードの最初のほうにある「検索リスト」の部分で定義されています。
<source lang="javascript">
<source lang="javascript">
var list = [
var list = [
{sjis:数値,utf16:数値,utf8:数値, type:"文字列", re:正規表現},
{sjis:数値,utf16:数値,utf8:数値, type:文字列, re:正規表現},
 ~中略~
  (中略)
];
];
</source>
</source>
{| class="wikitable"
{|class="wikitable"
! key(添字) !! value(値) !! 説明
! re
|-
! re !! 正規表現<br>RegExp
| カウントしたい文字を正規表現で記述します。<br>たとえば全角カタカナなら、<code style="color:#c00;">re:/[ァ-ヶ]/g</code> という具合です。<br>利用できる正規表現は、実行環境 JScript (JavaScript) の仕様に依存します。
| カウントしたい文字を正規表現で記述します。<br>たとえば全角カタカナなら、<code style="color:#c00;">re:/[ァ-ヶ]/g</code> という具合です。<br>利用できる正規表現は、実行環境 JScript (JavaScript) の仕様に依存します。
|-
|-
! type !! 文字列<br>String
! type
| 文字種の分類名です。複数設定したい場合はカンマで区切ります。<br>たとえば、<code style="color:#c00;">type:"総数,全角,カナ"</code> という具合です。<br>この場合、type["総数"], type["全角"], type["カナ"] の変数にカウントが加算されます。
| 文字種の分類名です。複数設定したい場合はカンマで区切ります。<br>たとえば、<code style="color:#c00;">type:"総数,全角,カナ"</code> という具合です。<br>この場合、type["総数"], type["全角"], type["カナ"] の変数にカウントが加算されます。
|-
|-
! sjis<br>utf16<br>utf8 !! 数値<br>Number
! sjis<br>utf16<br>utf8
| Shift_JIS/UTF-16/UTF-8 での1文字 (1カウント) あたりの容量(バイト)設定です。<br>省略した場合は 0 とみなされます。
| 1文字 (1カウント) あたりの容量 (バイト) を設定します。<br>たとえば、<code style="color:#c00;">sjis:2,utf16:2,utf8:3</code> という具合です。<br>それぞれ SJIS, UTF-16, UTF-8 での容量となります。省略した場合は 0 とみなします。
|}
|}


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

2015年9月30日 (水) 23:23時点における版

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

CharacterCounter.png

注意点

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

ソースコード

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

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

更新履歴

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

  • 2015/09/30
    • 改行コードを判別し、容量に反映するようにした。ただし、判別にクリップボードを使う仕様上、下記の難点があります。
      • 対象範囲に改行が存在しない場合は判別できない。
      • クリップボードの内容を記憶・復元する過程でクリップボード履歴が1つ増えてしまう。
    • 結果表示の内容を改訂。
      • 「段落」はデフォルトで非表示とした。(後述の定義変更を受けて)
      • 「拡張」を「依存」に改称し、MS拡張 → MS拡張+MS外字 の字数に変更。
      • 「サロゲート」を「ペア」に改称。
      • SJIS の容量表記を「数値 bytes」→「数値 バイト」に変更。
      • UTF-16 の容量表記を「数値 bytes (BOM無)」→「数値+2(BOM) バイト」に変更。
      • UTF-8 の容量表記を「数値 bytes (BOM無)」→「数値+3(BOM) バイト」に変更。
    • 分類「会話」を削除。(なんとなく用意してみた、程度の存在理由だったので)
    • 分類「段落」の正規表現を変更。 /^(?= [^ \s])/gm → /^(?![  \t]*$)/gm
      Microsoft Word の文字カウント仕様(段落数)に近づけた。
    • 分類「英単」を「半英単」に改称し、正規表現を変更。 /\b(?=\w)/g → /(?=[!-~](?![!-~]))/g
      Microsoft Word の文字カウント仕様(半角英数の単語数)に少しだけ近づけた。※仕様が不詳かつ複雑なため、完全再現は目指していません。
    • 「MS外字」の分類(type)を "総数,MS外字" → "総数,MS外字,全角" に変更。
    • 文字 U+0080 の分類(type)を "総数,Uni" → "総数,MS外字" に修正。
    • 文字種一覧に「SJIS保存時、よく似た半角文字に変換される文字」を追加。
  • 2014/02/17
    • アウトラインやアウトプットにフォーカスがある場合、結果が 0 になってしまうのを修正。
      Document ではなく Editor.ActiveDocument を利用してテキストを取得するようにした。
    • 分類「段落」の正規表現を変更。 /^(?= [^ \s]+)/gm → /^(?= [^ \s])/gm
    • 分類「会話」の正規表現を変更。 /^(?=「.+」$)/gm → /^(?=「.*」$)/gm
  • 2014/02/01
    • 初版公開。

文字種一覧

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

 赤地  の項目は、デフォルトで結果表示に採用されている項目です。ただし下記の項目は、計算により求められています。

  • 「字数」= 総数  改行  空白  ※総字数から改行・空白を引いた数
  • 「依存」= MS拡張  MS外字 
分類 (type) 該当文字 (re)
/正規表現/
容量
(sjis,utf16,utf8)
備考
階層 /^(?=\.)/gm ピリオドで始まる行 (階層付きテキスト)
段落 /^(?![  \t]*$)/gm 空白行でない論理行
半英単 /(?=[!-~](?![!-~]))/g ASCII文字による単語 (半角英数の単語)
総数
制御 改行 ※CR+LF
※CR または LF
2, 4, 2
1, 2, 1
ASCII制御文字
空白 タブ /\t/g 1, 2, 1 ASCII制御文字
/[\u0000-\u001F\u007F]/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文字
記号 /[\u0020-\u007E]/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 ※SJISでは ゔ ゕ ゖ などは扱えない
カナ /[ァ-ヶ]/g 2, 2, 3
ギリシャ /[Α-ΡΣ-Ωα-ρσ-ω]/g 2, 2, 2 ※SJISではシグマの語末形 ς は扱えない
キリル /[ЁА-Яа-яё]/g 2, 2, 2 ※Unicodeでは Ё ё の配置がJISと異なる
記号 /[´¨±×÷°§¶]/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 CP932 未定義文字
※SJIS保存時、0xA0/FD/FE/FF/80 に変換される
/\u0080/g 1, 2, 2
Uni /[¡¥¦©ª­®²³¹º¿À-ÖØ-öø-ÿ]/g 1, 2, 2 ※SJIS保存時、よく似た半角文字に変換される
/[¢£«¬¯µ·¸»]/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拡張   MS外字  に分類される文字は「機種依存文字」に該当し、Windows 以外では文字化けする可能性があります。
  • Shift_JIS では、 Uni  に分類される文字を正常に保存できません。保存を強行した場合、よく似た文字や ? の文字に変換されます。

文字種について

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

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

結果表示について

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

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