CGI-BBS > CGI > Perl > 半角カナのチェック方法を教えて下さい。


カレッヂ
カレッヂ


質問者 Minami  投稿日 1/23(水) 18:43:15
Perl初心者です。
全角文字の中に半角カナが混在しているかのチェック方法を知りたいのですが。
1.半角カナだけ
2.全角+半角カナ+全角
3.半角カナ+全角+半角カナ
4.全角だけ
とかあらゆるパターンでチェックに引っかかる簡単なコードがあれば嬉しいのですが。
全角カナに変換する方法は仕様上不可なのです。
どなたかよろしく御願い致します。
回答者 しあわせのツボ  [削除]  投稿日 1/23(水) 19:51:00
直接調べるのは難しいですね。できたとしても面倒だと思います。
値をコピーして全角カナに変換し、そのlengthを比較する、というのはどうでしょう。
元より長くなっていれば半角カナが含まれているし、ちょうど2倍になっていれば全て半角カナだったことになります。

入力された値が$valueに入っているとして、
$value_copy = $value;
jcode::h2z_sjis(\$value_copy);
if(length($value) == length($value_copy)) { 全て全角の時の処理 }
elsif(length($value)*2 == length($value_copy)) { 全て半角の時の処理 }
else { 全角と半角が混じっている時の処理 }
のような感じで。
回答者 みみみ  [削除]  投稿日 1/24(木) 08:51:40
半角カタカナが含まれているかどうかを判定するには,EUC-JP では
/\x8E/ を調べるだけでできます

# $str に半角カタカナが含まれているか判定する

if ($str =~ /\x8E/) {
  print "含まれている\n";
}

文字コードを全てEUCにするのがポイントです。

返信(回答)する


Web裏技