アプリ版:「スタンプのみでお礼する」機能のリリースについて

perlにてCSVファイルの中で特定の条件の時に
文字を削除する分を書きたいのですがうまくいかず困っております。

1111,11110000,4
2222,11110000,4
3333,11111100,2
4444,11000000,6

このようなデータで
3番目のフィールドを元に2番目のフィールドの文字を削除したいと思っております。

4の場合はお尻から4つの0を削除 → 1111,1111,4
2の場合はお尻から2つの0を削除 → 2222,111111,2

上記のデータですと最終的には以下のような形にしたいと思っております。

1111,1111,4
2222,1111,4
3333,111111,2
4444,11,6

お手数おかけしますがお力添えただけたら幸いです。

A 回答 (3件)

べたでやるなら、こんな感じでしょうか。


while(<>){
chop;
@x = split(/,/,$_);
$len = length($x[1]) - $x[2];
$x[1] = substr($x[1], 0, $len);
}


あとはこんなやりかたも。
while(<>){
chop;
@x = split(/,/,$_);
for(1..$x[2]){
chop($x[1]);
}
}
    • good
    • 0
この回答へのお礼

ご回答いただきありがとうございました。

ご教授いただいた内容で無事解決いたしました。

また何かありましたら宜しくお願い致します。

お礼日時:2014/07/07 11:40

見てわかると思いますが、私のスクリプトは3カラム目に指定された数だけ無条件に削除します。

0以外は削除したくないというのであれば、やり方は変わってきます。
    • good
    • 0

まず, どこで困っているのでしょうか? 「どこまでできているのか」「何に困っているのか」を明確にしてください.



あと, 仕様が不明確です. 例えば
・3番目のフィールドが 3 のときに 2番目のフィールドのお尻から 7個が 0
とか
・3番目のフィールドが 6 のときに 2番目のフィールドのお尻から 3個が 0 (当然その前には 0 でないものがある)
とかのときにはどうすればいいのですか?
    • good
    • 0
この回答へのお礼

ご回答いただきありがとうございました。
また、説明不足で大変申し訳ございませんでした。

2番の方の回答でなんとか解決致しました。

また何かありましたら宜しくお願い致します。

お礼日時:2014/07/07 11:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!