Perl:文字列前後のスペース&タブを削除
運営している俳句サイトで自動句会システムを作動させている。
ユーザーが自分が詠んだ俳句をテキストフォームを使って投稿するという仕組みなのですが、キーボードからの入力ではなくて、コピー貼付け操作をされる方も多く、意図しないスペースが入ったまま投稿されるケースが多いです。そのままですとシステムが正常に処理できないことがあるので、投稿受付時に不要なスペースやタブを自動的に削除するように対策を施すことにしました。
文字列前後の半角スペース&タブを削除
正規表現を使って文字列$valの末尾の半角スペース&タブを削除するスクリプトは以下の通り。
$val =~ s/\s*(.*?)\s*$/$1/;
テストスクリプトで確認してみましょう。
## 文字列前後のスペース&タブ削除
$val = "This is a pen. ";
$val =~ s/\s*(.*?)\s*$/$1/;
print $val;
文字列前後の全角スペースを削除
全角スペースの削除は、少しやっかいです。使用する文字コードによって異なるからです。
$val =~ s/\x81\x40//g; … SJIS
$val =~ s/\xa1\xa1//g; … EUC
$val =~ s/\xE3\x80\x80//g; … utf-8