全角文字を半角文字に
1投稿者:三河人  投稿日:2005/12/14(水)03:27:49
変換せよ!と、まつながさんから指令が出ましたので、
頑張ってPerlでソース書きました。以下参照。

※尚、やっつけ仕事なので、効率面や簡素化等は全く考えてません。
※もっといい方法がありましたら、誰か教えてください。
2投稿者:じゃろです 投稿日:じゃろです
じゃろです
3投稿者:三河人  投稿日:2005/12/14(水)03:30:52
#!/usr/local/bin/perl
##########################################
# 全角→半角変換 #
##########################################
$| = 1;
#変換文字列(全角)
@zen = ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','@','.','_','−','ー');
#変換文字列(半角)
@han = ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','@','.','_','-','-');
$word = 67;#変換文字の種類
$NEW_ID = 'Aー01234-Z5zZ@Zz678.90A';
$NEW_PW = 'opB_Cq_Zrr.sT';

print <<EOL;
Content-type: text/html

全角→半角変換<br>
EOL

print "NEW_ID : $NEW_ID";
$string = $NEW_ID;
&wordcng;
print " → $string<br>";

print "NEW_PW : $NEW_PW";
$string = $NEW_PW;
&wordcng;
print " → $string<br>";
print "END";
exit;

#####言語変換
sub wordcng {
for($i=0;$i < $word;$i++){
$stpos = 0;
$a = @zen[$i];
$b = @han[$i];
while (index($string, $a, $stpos) >= $stpos) {
$pos = index($string, $a, $stpos);
$len = length($a);
substr($string, $pos, $len) = $b;
$len = length($b);
$stpos = $pos + $len;
}

}
}
4投稿者:三河人  投稿日:2005/12/14(水)03:37:08
簡単な説明をば。
「$NEW_ID」と「$NEW_PW」に適当な英数字・記号を代入すると、
それぞれ、全角・半角が混在していても、全部半角文字に変換します。

ちなみに、このサンプルソースの実行結果は以下のようになります。
------------------------------------------
全角→半角変換
NEW_ID : Aー01234-Z5zZ@Zz678.90A → A-01234-Z5zZ@Zz678.90A
NEW_PW : opB_Cq_Zrr.sT → opB_Cq_Zrr.sT
END
投稿者 メール

新着レス レス全部を見る 掲示板に戻る 上へ