※ ChatGPTを利用し、要約された質問です(原文:文字列に半角・全角スペースが入っているかをチェックする関数のおかしな結)
文字列に半角・全角スペースが入っているかをチェックする関数のおかしな結果
このQ&Aのポイント
「文字列に半角・全角スペースが入っているかをチェックする関数」の結果がおかしいです
特定の文字列を入力すると、半角・全角スペースとして判定されてしまいます
正しい結果を得るためにはどのようにすればいいでしょうか
文字列に半角・全角スペースが入っているかをチェックする関数のおかしな結
文字列に半角・全角スペースが入っているかをチェックする関数のおかしな結果?
下記コードのように「文字列に半角・全角スペースが入っているかをチェックする関数」を作りました。
$textに入る文字列に半角・全角のスペースが入っているかをチェックします。
--------------------------------------------
my $text = "東 京";
if( isSpace($text) ) {
print "スペースあり";
} else {
print "スペースなし";
}
sub isSpace{
my $str = shift || return(undef);
if( $str =~ /.*[\s ]+.*/ ){
return(1);
}else{
return(0);
}
}
--------------------------------------------
しかしなぜか1行目を
my $text = "メ";
とするとスペースが入っているという結果になってしまいます。
なぜ「メ」が入ると半角もしくは全角のスペースとみなされてしまうのでしょうか?
また、どうすれば正しくチェックできるようになりますか?
よろしくお願いします。
お礼
ありがとうございます! そうです、Shift-JISで書いています。 なかなか、文字コードとかって鬼門ですね・・・。 全角スペースは\x81\x40なのですね。ググってみたらいろいろ書かれていました。 どうも助かりました。感謝します!