- ベストアンサー
特定の文字列を削除したい
PearlでCGIミニゲームを制作しています。 そこで質問なのですが、 $001 = 'あいうえおかきくけこ'; $002 = 'えおか'; $001から$002を削除したいのですが、 一体どの様にすれば削除する事が出来ますか? 何か良いアドバイスして頂けないでしょうか?m(__)m
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
私もCGIゲームを作っていて特定の文字列を削除したい機会が良くあります。 Ethersky さんの方法で問題なく出来ていますが $002の文字列の中身によってエラーが出ることがあります。 いわゆるダメ文字を避ければ回避できると思いますがいかがでしょうか? 単純化した以下のアドレスでは問題なく実行されますが他にはエラーになる原因は思い当たられないのでしょうか?
その他の回答 (5)
- chario_sports
- ベストアンサー率0% (0/4)
それほど難しいことではないと思います。 比較する文字列をいったんURLエンコードしてから 置換処理を行い、その後URLデコードするだけで 大丈夫ですよ。
- txrx
- ベストアンサー率45% (83/184)
最近Perlはやってないので、自信ありませんが・・・。 Perlの場合、正規表現は1バイト文字列で行います。 # 少なくとも私がPerlしてた数年前は・・・。 なので、2バイト文字の正規表現を行うと不具合が続出です。EUCでもJISでもシフトJISでも・・・。 通常は、jocdeと言うライブラリを使用して日本語(2バイトコード)を処理します。 参考URLをご覧ください。 あと、私が失敗した例では、FTP使用時とTelnet使用時のコード変換です。 Telnet使用時ではEUCでコードを書き、テストで上手くいったので実際のサーバへアップするわけですが、この時S-JISへ自動変換してしまい上手く動作しなかったと言った事が度々ありました。
- 参考URL:
- http://srekcah.org/jcode/
- hrm_mmm
- ベストアンサー率63% (292/459)
perlスクリプトファイルの文字コードは何ですか? shift-JISを使っていると、いろんなところでエラーが発生しやすくなりますけど。 とくに、正規表現やパターンマッチにおいては、EUCを使うのが無難です。
- Ethersky
- ベストアンサー率71% (168/235)
> 何故か、エラーが発生して利用出来ないのです。 エラーの内容が分かれば対処できますが。
- Ethersky
- ベストアンサー率71% (168/235)
基本は置き換えを利用して削除します。 $001 = 'あいうえおかきくけこ'; $002 = 'えおか'; $001 =~ s/$002//g;
補足
ご返答ありがとう御座います! 私も上記の方法を以前から試しているのですが、 何故か、エラーが発生して利用出来ないのです。 様々事を調べたらsplice(@001,$002,1); と記入しても無理でした(当たり前!?) ん~ 普通は上記の教えて頂いた方法が一般的だと思います。 それが今回は使えないのでそれ以外はないでしょうか?