電子書籍の厳選無料作品が豊富!

Perl全くの初心者です。基本的なことかもしれませんが、お願いします。

テキストに入力されたデータが適当な値であるかどうかのチェックを行いたいと思っています。
ふりがなの項目にひらがな以外の文字が入っていないか調べたいのですが、参考になるサイトやサンプルコーディングなどあれば教えていただけますか?
ひらがなのチェックは文字コードを用いてチェックしたいのですが、どのようにコーディングしたらよいのかわからず、困っています。

A 回答 (4件)

jcode.plのtrを使えばもうちょっと楽に書けそうです。



$\ = "\n";
require 'jcode.pl';
$hira = 'あいうえお';
$kana = 'あイうえお';
$han = 'あいuえお';
$from = 'あ-ん';
&jcode::tr (\$hira,$from,'','d');
&jcode::tr (\$kana,$from,'','d');
&jcode::tr (\$han,$from,'','d');
print 'hira NG' if $hira;
print 'kana NG' if $kana;
print 'han NG' if $han;
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
jcode.plの存在は知っているのですが、使い方がまだ全然わかっていない状態で・・・・
これから頑張って勉強したいと思います。
#3さんの補足とあわせて無事チェック処理をすることができるようになりました。
ありがとうございました。

お礼日時:2004/04/21 21:28

#2 です。



#3 さんへ

>ぁ-ゞ がひらがなの範囲らしいです。

ぜんぜん気にしてませんでした。
ご指摘感謝です。
(「ぁ」「あ」の順番なんですね。「あ」「ぁ」にしてくれれば良いのに。。。)

と、言うわけで、こんな感じかな?
(ひらがなに含めたい文字がある場合は、ゞのあとに追加)

$\ = "\n";
require 'jcode.pl';
$hira = 'あいうえおぁ';
$kana = 'あイうえお';
$han = 'あいuえお';
$from = 'ぁ-ん゛゜ヽ-ゞ';
&jcode::tr (\$hira,$from,'','d');
&jcode::tr (\$kana,$from,'','d');
&jcode::tr (\$han,$from,'','d');
print 'hira NG' if $hira;
print 'kana NG' if $kana;
print 'han NG' if $han;
    • good
    • 0

#1 です。



#2 さんへ

> $from = 'あ-ん';

ですが、正確には、ぁ-ゞ がひらがなの範囲らしいです。(「ぁ」は意識があったのですが、「ゞ」は調べるまで考えませんでした(笑))

同様に、カナは ァ-#A5FA(EUC) だそうです。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
「ぁ」が「あ」の前とは思いませんでした。
#2さんのコーディング例を使用させてもらい、無事処理を行うことができました。
ありがとうございます。

お礼日時:2004/04/21 21:30

力技になってしまいました(^_^;)



#!/use/local/bin/perl

@test = qw(あいうえお
あいウえお
あいuえお
);

foreach (@test) {
printf("%-20s => %s\n", $_, (ishira($_) == 1) ? 'はい' : 'いいえ');
}

exit(0);


sub ishira {
my($p) = @_;
my($r, $l, $i, $m);
my($hira_euc) = '(?:\xA4[\xA1-\xF3])';
my($hira_sjis) = '(?:\x82[\x9F-\xF1])';

$r = 1;
$l = length($p);
for ($i = 0; $i < $l; $i++) {
$m = substr($p, $i, 1);
if (unpack("C", $m) > 127) {
$m .= substr($p, ++$i, 1);
$r = 0 unless ($m =~ $hira_euc);
}
else {
$r = 0;
}
}

($r);
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!