全角のスペースを半角のスペースに変換する

全角のスペースを空白のスペースに変換します。構文や単語チェックの前処理に便利です。
全てのケースや機種依存文字に対応しているわけではないのでご注意ください。
この HTML 上では漢字がシフトJIS になっていますが、本来は EUC 向けとなっています。


##### 全角 EUC の Space になる可能性がある文字を半角にする #####
sub zsp2hsp
{
    my($wk) = $_[0];
    my($lm1) = length($wk);

    for (my($i) = 0 ; $i < $lm1 ; ) {
        my($one) = ord(substr($wk, $i, 1));
            if ( $one >= 128) {
                # 2 byte code
                my($two) = ord(substr($wk, $i+1, 1));
                my($cvt) = 0;
            if ($one < 0xa1 || $one > 0xfc || $two == 0xa0 || $two == 0xff) {
                $cvt = 1;
            } elsif ($one == 0xa1 && $two == 0xa1) {
                $cvt = 1;
            }
            # 空白に置換 
            if ($cvt != 0) {
                substr($wk, $i, 2) = "  ";
            }
            $i+=2;
        } else {
            # 1 byte code
            $i++;
        }
    }

    return ($wk);
}

総合ホームページ Perl納戸部屋