• ベストアンサー

CGIで数値を含む文字列から0を取り除きたい

Perl/CGIでわからないところがありまして質問させてください。 @aaa という配列が以下のようないろいろな文字列が入るとします。 @aaa = ('01_02_03','01_10','02','02_11_09'); ※2桁の数字が_で区切られています。 ※最高でも'01_02_03'のように3つの区切りまです。 ※10以下の数字は必ず前に0がつきます。 これらの数字をどうにか @aaa = ('1_2_3','1_10','2','2_11_9'); のように一桁目の0を取り除きたいのです。 恐れ入りますがどなた様かご教授いただけませんでしょうか。 よろしくお願いいたします。

  • CGI
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

@aaa = ('01_02_03','01_10','02','02_11_09'); while(<@aaa>){ s/(0)(\d{1})/$2/g; print "$_\n"; } while(<@aaa>){ s/(0{1})([0-9]{1})/$2/g; print "$_\n"; } 他にも色々・・

volvo850love
質問者

お礼

ありがとうございました。 while(<@aaa>){ s/(0)(\d{1})/$2/g; print "$_\n"; } の方法を使わせていただくことにしました。

その他の回答 (1)

  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.1

バラした中身の数値が2桁固定なら簡単です。 @aaa = map{s/0(\d)/$1/g, $_} @aaa; # もし可変桁で "000" ⇒ "0" や "0" ⇒ "0" という条件だと、ちょっとした課題にする事ができます。

volvo850love
質問者

お礼

ありがとうございました。 そういった方法なんですね・・・ 勉強になります。

関連するQ&A

  • Perlの数値・文字列操作

    Perlで以下の16進数の連続した文字列を db444500 配列に入れて後からわかりやすい16進数で表示させたり、 foreach (@list){ print sprintf("%02X ", $_); } 直接文字列として、 0xdb, 0x44, 0x45, 0x00 と表示させるには、どのような書き方をすれば良いのでしょうか?

    • ベストアンサー
    • Perl
  • Perlでの文字列操作について

    Perlを使用しての文字列操作について教えてください。 たとえば以下のような数字とアルファベットが順に並ぶ文字列があるとします。 11A4C555D67B114B9423C アルファベットは1文字ですが、数字は何個でも連続で並びます。 この文字列を「数字アルファベット」の部分で分割し、配列に格納したいのですが、うまくいきません。 @array=('11A','4C','555D','67B','114B','9423C') どなたか教えてください。よろしくお願いいたします。

  • Excel 文字列にする関数

    エクセルが苦手なので教えてください! 選別番号で6桁の数字を使っているんですが、頭の数字が0から 始まるものがあり、セルに入力するとその選別番号だけ5桁に なってしまいます。 文字列にすればいいということだけはわかっているのですが、 すでに数字が入っている列に対して、関数を使って以下のような ことはできますか? (1)選別番号が5桁だったら、頭に0をつけて6桁にする、  かつ文字列にする (2)選別番号がすでに6桁だったら、そのまま文字列に変換 宜しくお願いします!

  • Excelで数字を4桁区切りにする文字列を登録したい

    桁数の多い数字は、普通は3桁ごとに「,」で区切りますが、日本では4桁 ごとに桁上がりする読み方が普通なので、 (1234兆5678億9012万3456円など) 3桁区切りでは読みにくくて困ります。 Excel2003では、書式→セル→表示形式→ユーザー設定→種類の中 に4桁区切りにする設定の文字列が無いので、 [>100000000]0!,0000!,0000;[>10000]0!,0000;0 を書き込んで4桁区切りにしていますが、文字数が41文字もあり 「!」「;」「,」など紛らわしいので、その都度書き込むのが苦痛です。 種類の文字列には、沢山の例が示されていますが、この中に上のような 文字列を登録して、いつでも一発で使えるようにはできないものでしょうか。

  • 指定文字列を空文字に

    教えてください。 文字列(数字)に含まれる「,」を空白文字に変換しようと思い、下記のように記述しましたがうまくいきません。 $aaa='11,,111'; $bbb = str_replace($aaa,'',','); $bbbには「,」が返ってきてしまいます。$aaaは「11,,111」のままです。 $bbbに「11111」という値が返ってきてほしいのですが、どうすればよいでしょうか? どうかご教授ください。

    • ベストアンサー
    • PHP
  • 目印の文字列でレコードを区切りたい

    お世話になります、Perl初心者です。 正規表現で探したのですがたどりつけなかったので質問させて下さい。 以下のようなレコード(文字列)があります。 「abcxxxiiiislslslfjdkasabcdasdsdfa;ljkabcdfs」 これを「abc」で区切り以下のように3つに分けたいのです。 abcxxxiiiislslslfjdkas abcdasdsdfa;ljk abcdfs abcから次のabcまでをひとつの文字列にして変数に格納したいのです。 どうすればいいでしょうか?教えて下さい。

    • ベストアンサー
    • Perl
  • 01_02や02_11などの文字列から0だけを取り除きたい

    Perlを使って $number1 = '01_11_10'; $number2 = '03_01'; 上記のようないくつかの変数がありこの文字列から桁を調整している0を取り除きたいのです。 具体的には下のようになればいいのです。 $number1 = '1_11_10'; $number2 = '3_1'; なにかスマートな方法、一回の関数で置換する方法はございますか? ご教授よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • Excel特定の文字列を抽出する関数を教えてください。

    A列に***AAA/2桁の数字***と言う値があります。 *はランダムです。 2桁の数字もランダムです。 AAA/2桁の数字のみを抽出する関数を教えてください。 重複する値は、1つを残して削除したいです。 よろしくお願いします。

  • カンマ区切りの文字列を検索する

    「1,2,3,5,10…」のようにカンマ区切りになっている文字列が格納されているカラム(number)があり、その文字列に含まれている数字と検索用配列「1,2,3」と比較して存在すれば抽出するみたいなことがやりたいのですがよくわかりません。 カンマ区切りではなく単一の数字であれば select * from tests where number IN(1,2,3); みたいな感じでnumberがIN()のなかにあるかどうかで抽出できると思うのですが、この場合はどのようにすればよいのでしょうか。 ちょっと説明が下手でわかりづらいかと思いますがよろしくおねがいします。

    • ベストアンサー
    • MySQL
  • 文字列について

    昨日以下の質問をしました初心者ですが、 今自分で関数を作成しているのですが、文字列(丸数字)の文字化けにかなり苦しんでいます。 (※注※)これ以降(1)など()の中に数字を入れて記述しているものは実際のソースコード上では丸数字で記入してます。教えてgooでは丸数字が記述できないようでして… 関数の内容としては、(1)あ(2)い(3)う……このように丸数字で区切られている文字列を配列名を$dataとすると、$data[0]には「あ」、$data[1]には「い」、$data[2]には「う」が入るような関数を作成しています。 この丸数字の数は(10)まで対応させようと考えてます。 という質問をしましたが、この問題に関しては、 function bunkai($str1){ $data=explode('__SEPRATOR__',str_replace(Array("(1)","(2)","(3)","(4)","(5)","(6)","(7)","(8)","(9)","(10)"),'__SEPRATOR__',$str1)); array_shift($data); return $data; } と記述することのより解決しました。 しかし、昨日の質問を少し僕が間違えていたようで、実際には、$data[0]には「(1)あ」、$data[1]には「(2)い」、$data[2]には「(3)う」が入るような関数を作成したかったのです。で、試行錯誤しようにも方法が思いうかびませんでした。何か良い方法はないでしょうか?? ちなみに文字列は(1)あ(2)い(3)う……のように(1)から順番に始まるものもあれば(3)え(4)う…と(1)ではなく途中から始まるものもあります、なので、配列の順番を取ってきてそのまま丸数字に置き換えて挿入するという方法はダメです。 誰か文字列操作に詳しいお方、教えてもらえたらうれしいです。

    • ベストアンサー
    • PHP