プロが教える店舗&オフィスのセキュリティ対策術

Perl 文字コード sjis

以下のように、全角文字列の中から、全角英数字のみを抜き出したいのですが、良い方法はありますでしょうか。

あア亜ABC-123

ABC-123

宜しくお願い致します。

A 回答 (2件)

いったんUTF-8に変換して、s///g置換で英文字以外を削除する方法が一番楽だと思います。


日本語処理するときは、いったんUTF-8に変換すると便利な場合が多々あります。

UTF-8の扱いについては、参考URLをどうぞ。

--------------------------------------------------
use Encode;

# 検索対象の文字列をUTF-8に変換
my $str = 'あア亜ABC-123';
my $utf_str = Encode::decode('shift-jis', $str);

# 置換に使う条件文字列をUTF-8に変換
$trstr = '0-9A-Za-z-'; # ここは自由に変更してください
my $utf_trstr = Encode::decode('shift-jis', $trstr);

# UTF-8同士ならそのまま置換できる。
# $utf_trstrの中身以外の文字を削除
$utf_str =~ s/[^$utf_trstr]//g;

# 出力するときにshift-jisに戻す
print Encode::encode('shift-jis',$utf_str);

参考URL:http://www.pure.ne.jp/~learner/program/Perl_unic …
    • good
    • 0
この回答へのお礼

うまくいきました。
ありがとうございます!

お礼日時:2006/01/04 17:12

use encoding 'shiftjis';



$text="あア亜ABC-123";
$text =~ s/[^A-Za-z0-9!$&%@_?-]//g;
print $text;
#こんな感じで、英記号は適当に追加して下さい
    • good
    • 0

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