- 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