WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:perlでの文字数カウントについて

0:[投稿] mag [2005/04/15 20:11 ][環境:わからない perl]

はじめまして。
現在、コメント部分($comment)に打ち込まれた文字を数えるものを作成しています。

$count = length($comment);

で、$comment部分に打ち込まれた文字をバイト数で出すようにしているのですが、$commentで改行が入力された場合、その改行はカウントに含まれないようにしたいのです。

例えば、

aaa
aaa
・・・だと、「文字6バイト」+「改行2バイト」で8バイトになってしまいますが、これを文字だけ数えるようにして6バイトにしたいのです。
スペースが入力された場合も含まれないようにしたいのですが・・・。

それと、バイト数ではなくて文字の数でカウントするようにできないでしょうか。
全角1文字入力すると2バイトなのでカウントは「2」になるのですが、それを文字の数のカウントで「1」にしたいのです。

色々試してみたのですが、どうもうまくいきません。
アドバイスいただければ幸いです。
宜しくお願いいたします。


1:[回答] ふじ [URL] [2005/04/15 20:23 ]

>「文字6バイト」+「改行2バイト」で8バイトになってしまいますが、これを文字だけ数えるようにして6バイトにしたいのです。
> スペースが入力された場合も含まれないようにしたいのですが・・・。
安直ですが、改行と空白を削除した文字列を作ってその length を取るとか。

$c = $comment;
$c =~ s/[\r\n\s]//g;
length($c);

> それと、バイト数ではなくて文字の数でカウントするようにできないでしょうか。
> 全角1文字入力すると2バイトなのでカウントは「2」になるのですが、それを文字の数のカウントで「1」にしたいのです。
Perlのバージョンはいくつでしょう?

5.8以降なら、($comment の文字コードが EUC-JP だとすると)
use Encode;
length(decode('euc-jp', $comment));

で文字列を数えられます。

5.6以前なら、
http://www.din.or.jp/~ohzaki/perl.htm#JP_Split
ここら辺を参考に。


2:[質問] mag [2005/04/16 10:28 ]

ふじさん、回答ありがとうございました。
おかげさまで、改行とスペースを含まないでカウントすることができるようになりました。

文字の数でのカウントですが、
「use Encode;」を追加して「$count = length(decode('euc-jp', $comment));」としたのですが、どうもうまくいきません。
書き方もしくは書く場所等に関係があるのでしょうか。
perlのバージョンは5.8です。(書き忘れていました。すみません。)


3:[完了] mag [2005/04/16 11:57 ]

度々すみません。
文字数でのカウント、できました!
文字コードを間違えていたようです。
初歩的なミス・・・、お騒がせいたしました。
おかげさまで完成しました。
本当にありがとうございました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World