利用者:Sat.d.h./char-counter.js
表示
お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。
多くの Windows や Linux のブラウザ
- Ctrl を押しながら F5 を押す。
Mac における Safari
Mac における Chrome や Firefox
- ⌘ Cmd と ⇧ Shift を押しながら R を押す。
詳細についてはWikipedia:キャッシュを消すをご覧ください。
/**
* 文字数を種類ごとにカウントするツール。※ただし合字ゟ、ヿ、𪜈は非対応
* 起動方法は、
* 1.ページ上部の文字数タブをクリック(記事全体の文字数をカウント)
* 2.カウント対象の文字列を選択し、Ctrl + Shift + G(選択範囲の文字数をカウント)
* 下リンクによれば、ひらがなは60~70%、漢字は20~30%、カタカナは10%が理想である。
* https://books.google.co.jp/books?id=ZSkfBAAAQBAJ&pg=PA106&lpg=PA106#v=onepage&q&f=false
* 表記の詳細は[[w:ja:Wikipedia:表記ガイド]]を参照。
*/
(function() {
'use strict';
// 画面上部のタブ
$('#p-namespaces > ul')
.append($('<li><span><a>文字数</a></span></li>').attr({'id':'char-count'}));
$('#char-count').click(function() {
counter();
});
// キーボードショートカット (Ctrl + Shift + G)
$(window).keydown(function(e){
if (e.ctrlKey && e.shiftKey && e.keyCode === 71) {
counter();
return false;
}
});
function counter () {
// 文字列取得
var endPos = 0;
var startPos = 0;
var txt = '';
var wpTextbox = {};
if (document.getElementById('editform')) {
wpTextbox = document.forms.editform.wpTextbox1;
if (wpTextbox.selectionStart) {
endPos = wpTextbox.selectionEnd;
startPos = wpTextbox.selectionStart;
txt = wpTextbox.value.substring(startPos,endPos);
} else {
txt = wpTextbox.value;
}
} else if (document.getSelection().toString().length > 0) {
txt = document.getSelection().toString();
} else {
txt = document.getElementById('bodyContent').textContent;
}
// テキストから文字種ごとにまとめ、文字数カウント
var hanBasic = txt.match(/[\u2e80-\u2fdf|\u3400-\u4dbf|\u4e00-\u9fff|\uf900-\ufaff]/g) || '';
var hanSuppl = txt.match(/[\ud840-\ud87e][\udc00-\udfff]/g) || '';
var hira = txt.match(/[ぁ-ゖ|𛀁]/g) || '';
var kana = txt.match(/[ァ-ヺ|ㇰ-ㇿ|ヲ-ン|𛀀]/g) || '';
var numHanBasic = hanBasic.length;
var numHanSuppl = hanSuppl.length;
var numHira = hira.length;
var numKana = kana.length;
var numTotal = txt.length;
var numHan = numHanBasic + numHanSuppl;
var numJpan = numHan + numHira + numKana;
var numOther = numTotal - numJpan;
alert('漢字: ' + numHan + '文字 (' + Math.round(numHan / numJpan * 100) + '%) 、'
+ 'ひらがな: ' + numHira + '文字 (' + Math.round(numHira / numJpan * 100) + '%) 、'
+ 'カタカナ: ' + numKana + '文字 (' + Math.round(numKana / numJpan * 100) + '%) 、'
+ 'その他: ' + numOther + '文字');
}
}());