「
文字カウント
」を編集中
2017年6月28日 (水) 20:55時点における
Masme
(
トーク
|
投稿記録
)
による版
(処理時間表示について文言修正)
(
差分
)
← 古い版
|
最新版
(
差分
) |
新しい版 →
(
差分
)
ナビゲーションに移動
検索に移動
警告: このページの古い版を編集しています。
公開すると、この版以降になされた変更がすべて失われます。
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、さまざまなメリットもあります。
スパム攻撃防止用のチェックです。 決して、ここには、値の入力は
しない
でください!
<div style="float:right">__TOC__</div> 選択範囲or文書全体の字数・容量を算出するマクロです。 [[ファイル:CharacterCounter.png|border]] ==注意点== * 改行・半角文字・全角文字、すべて1文字とカウントします。 * Shift_JIS は Windows-31J / Microsoft コードページ 932 (CP932) に準拠しています。 * Unicode 対応は一部に留まります。 ** サロゲートペアは、Mery では仕様上2文字とカウントされますが、このマクロでは1文字とカウントします。 ** 結合文字や異体字セレクタ、Unicode の空白文字や制御文字は考慮していません。これらは通常の文字と同様にカウントされます。 * 文字数や文字種が増えるほど処理に時間がかかります(作者の環境では、100万字の処理に約1.5秒かかりました)。<br>マクロ実行後、ステータスバーに処理時間が報告されるので参考にしてください。 ==ソースコード== ダウンロード→ <b>[[メディア:文字カウント.zip|文字カウント.zip]]</b> * 拙作ですがアイコンファイル (文字カウント.ico) を同梱してあります。<br>Mery 2.4.7 以降の場合、マクロ (文字カウント.js) と同じフォルダに、<br>Mery 2.4.6 以前の場合、Mery.exe と同じフォルダに、<br>アイコンファイルを配置しておくとツールバーにアイコンが読み込まれます。 ==更新履歴== [[ファイル:文字カウント.zip]] * 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 **: 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) を基準にしています。 <b style="background:#fcc;">赤地</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;" !colspan="4"| 分類 (type) ! 該当文字 (re)<br>/正規表現/ !! 容量<br>(sjis,utf16,utf8) !! 備考 |- !rowspan="3" style="background:#ccc;"| !colspan="3"| 階層 | /^(?=\.)/gm || || ピリオドで始まる行 (階層付きテキスト) |- !colspan="3"| 段落 | /^(?![ \t]*$)/gm || || 空白行でない論理行 |- !colspan="3"| 半英単 | /(?=[!-~](?![!-~]))/g || || ASCII文字による単語 (半角英数の単語) |- !rowspan="33" style="background:#fcc;"| 総数 |- !rowspan="3"| 制御 !style="background:#fcc;" colspan="2"| 改行 | ※CR+LF<br>※CR または LF || 2, 4, 2<br>1, 2, 1 || ASCII制御文字 |- !style="background:#ccf;"| 空白 !! タブ | /\t/g || 1, 2, 1 || ASCII制御文字 |- !style="background:#ccc;" colspan="2"| | /[\u0000-\u001F\u007F]/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文字 |- ! 英字 !! 半英 | /[A-Za-z]/g || 1, 2, 1 || ASCII文字 |- !rowspan="2"| 記号 !style="background:#ccc;"| | /[\u0020-\u007E]/g || 1, 2, 1 || 上記以外のASCII文字 |- !style="background:#fcc;" rowspan="2"| 半カナ | /[。「」、・ー゙゚]/g || 1, 2, 3 || |- ! 仮名 | /[ヲ-ッア-ン]/g || 1, 2, 3 || |- !rowspan="16" style="background:#fcc;"| 全角 !style="background:#ccf;"| 空白 !! 全空 | / /g || 2, 2, 3 || |- ! 数字 !! 全数 | /[0-9]/g || 2, 2, 3 || |- ! 英字 !! 全英 | /[A-Za-z]/g || 2, 2, 3 || |- !rowspan="2"| 仮名 ! かな | /[ぁ-ん]/g || 2, 2, 3 || ※SJISでは ゔ ゕ ゖ などは扱えない |- ! カナ | /[ァ-ヶ]/g || 2, 2, 3 || |- !colspan="2"| ギリシャ | /[Α-ΡΣ-Ωα-ρσ-ω]/g || 2, 2, 2 || ※SJISではシグマの語末形 ς は扱えない |- !colspan="2"| キリル | /[ЁА-Яа-яё]/g || 2, 2, 2 || ※Unicodeでは Ё ё の配置がJISと異なる |- !rowspan="2" colspan="2"| 記号 | /[´¨±×÷°§¶]/g || 2, 2, 2 || UTF-8で2バイトの全角記号(8字) |- | /[、。, (中略) †‡◯]/g || 2, 2, 3 || UTF-8で3バイトの全角記号(138字) |- !colspan="2"| 罫線 | /[─│┌ (中略) ┥┸╂]/g || 2, 2, 3 || 罫線素片(32字) |- !rowspan="3"| 漢字 ! 第一 | /[亜唖娃 (中略) 湾碗腕]/g || 2, 2, 3 || JIS第一水準漢字(2965字) |- ! 第二 | /[弌丐丕 (中略) 瑤凜熙]/g || 2, 2, 3 || JIS第二水準漢字(3390字) |- !style="background:#fcc;" rowspan="2"| MS拡張 | /[纊褜鍈 (中略) 鶴鸙黑]/g || 2, 2, 3 || IBM拡張文字(漢字360字) |- !style="background:#ccc;"| | /[①-⑳Ⅰ (中略) ¦'"]/g || 2, 2, 3 || NEC特殊文字/IBM拡張文字(記号等87字) |- !style="background:#ccc;" rowspan="3"| !style="background:#fcc;" rowspan="3"| MS外字 | /[\uE000-\uE757]/g || 2, 2, 3 || Microsoft ユーザー定義外字(1880字) |- | /[\uF8F0-\uF8F3]/g || 1, 2, 3 |rowspan="2"| CP932 未定義文字<br>※SJIS保存時、0xA0/FD/FE/FF/80 に変換される |- !style="background:#ccc;"| | /\u0080/g || 1, 2, 2 |- !rowspan="6" style="background:#fcc;"| Uni !style="background:#ccc;" rowspan="3" colspan="2"| | /[¡¥¦©ª®²³¹º¿À-ÖØ-öø-ÿ]/g || 1, 2, 2 || ※SJIS保存時、よく似た半角文字に変換される |- | /[¢£«¬¯µ·¸»]/g || 2, 2, 2 || ※SJIS保存時、よく似た全角文字に変換される |- | /ゔ/g || 2, 2, 3 || ※SJIS保存時、全角カナの ヴ に変換される |- !style="background:#ccc;" colspan="2"| | /[\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> に分類される文字を正常に保存できません。保存を強行した場合、よく似た文字や <code>?</code> に変換されます。 ==文字種について== 文字種の分類は、ソースコードの最初のほうにある「文字種の定義」の部分で定義されています。 <source lang="javascript"> var list = [ {sjis:数値,utf16:数値,utf8:数値, type:文字列, re:正規表現}, (中略) ]; </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["カナ"] の変数にカウントが加算されます。 |- ! sjis<br>utf16<br>utf8 | 1文字 (1カウント) あたりの容量 (バイト) を設定します。<br>たとえば、<code style="color:#c00;">sjis:2,utf16:2,utf8:3</code> という具合です。<br>それぞれ SJIS, UTF-16, UTF-8 での容量となります。省略した場合は 0 とみなします。 |} ==結果表示について== 表示される結果は、ソースコードの最後のほうにある「ここから~ここまで結果表示の定義」の部分で定義されています。<br> ソースコードを単純化すると、以下のような処理になっています。 <source lang="javascript"> var result = (※出力用のテキストを生成); Alert(result); </source>
編集内容の要約:
MeryWikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MeryWiki:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の数式を計算してその答えを欄に入力してください (
ヘルプ
):
いちたすには =
キャンセル
編集ヘルプ
(新しいウィンドウで開きます)
スポンサーリンク
ナビゲーション メニュー
個人用ツール
ログインしていません
トーク
投稿記録
アカウント作成
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
編集
履歴表示
その他
検索
スポンサーリンク
スポンサーリンク
案内
メインページ
ヘルプ
よくある質問
マクロリファレンス
マクロライブラリ
プラグインライブラリ
構文ファイル
テーマ
寄付・開発支援
練習用ページ
開発室
開発者のブログ
ツール
スポンサーリンク