[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

Re: Word Count?



こんにちは。chiyu@ふくおか、といいます。

Takeshi TAKIYAMA <takiyama@xxxxxxxxxxxxxxxxxxxxxxx> writes:

> 瀧山と申します。いつもお世話になます。
> 
> meadow1.10を使用しております。
> meadow上で日本語の文字数をカウントしたり、英語のword数を数えたり
> する方法がありましたら、御教示頂けませんか?

次のようなEmacs-LISPスクリプトで、
領域内の日本語文字数がカウントできると思います。
英語のword数は、正規表現とか使えば、数えることができると
思います。(今は時間がないので、試せませんでした)。

#結果表示は、message関数ではなくて、新しいバッファを作って
#そこに表示した方が、かっこいいかな?

ちなみに
japanese-jisx0208
katakana-jisx0201
とかは、メニューバーから
Mule -> Show All of Mule Status
をクリックすれば一覧が出て来ます。
また、C-u C-x C-= でカーソル位置の文字の情報が得られます。

以上。お元気で。

(defun my-mojisuu (beg end) ;リージョンを指定して、M-x my-mojisuu とする。
  (interactive "r") ;リージョンの最初と最後の位置がbegとendに入る。
  (save-excursion
    (save-restriction
      (narrow-to-region beg end) ;編集可能領域をリージョンに制限する。
      (let (ch ch-id (ch-count 0))
        (goto-char (point-min)) ;バッファの先頭へ
        (while (not (eobp)) ;バッファの最後でない間、
          (setq ch (following-char)) ;現在位置の文字をchに代入
          (setq ch-id (nth 0 (split-char ch))) ;その文字のleading-charcter
          (if (eq 'japanese-jisx0208 ch-id) ;その文字がJIS x 0208ならば
              (setq ch-count (1+ ch-count))) ;カウンタch-countに1を足す。
          (if (eq 'katakana-jisx0201 ch-id) ;その文字が半角仮名でも
              (setq ch-count (1+ ch-count))) ;カウンタch-countに1を足す。
          (forward-char 1)) ;次の文字へ進む。
        (message "文字数は%d" ch-count) ;結果表示。
        ))))