-1

私はperlが初めてで、txtファイルの処理で問題に直面しています.数日間心配していました.誰かが私に手を差し伸べてくれることを願っています. ここにtxtがあります:

AA=a1.png,a2.png,a3.png,b1.png,b2.png,b3.png,fend.png
FF=k1.png,k2.png,k3.png,l1.png,l2.bmp,l3.png
OO=p1.png,y1.png,ul23.bmp
ZZ=i1.png,j1.png

私はそれがなりたい:

AA=a1.png,a2.png,a3.png
AA=b1.png,b2.png,b3.png
FF=k1.png,k2.png,k3.png
FF=l1.png,l2.bmp,l3.png
OO=p1.png
OO=y1.png
ZZ=i1.png
ZZ=j1.png

つまり、最後の種類の画像を切り捨て、最初の 2 種類の画像を 1 対 1 の形式で保持する必要があります。前もって感謝します。

4

1 に答える 1

1
my $data = <<'EOD'
AA=a1.png,a2.png,a3.png,b1.png,b2.png,b3.png,fend.png
FF=k1.png,k2.png,k3.png,l1.png,l2.bmp,l3.png
OO=p1.png,y1.png,ul23.bmp
ZZ=i1.png,j1.png
EOD
;

my $last_letter = "";
my $newline = "";
foreach my $line (split(/\n/, $data)) {
    my ($var, $vals) = split("=", $line);
    foreach my $val (split(",", $vals)) {
        $val =~ /^(.)(\d+\..+)$/;
        next unless ($1 && $2);
        if ($last_letter eq $1) {
            print ",";
        } else {
            print "$newline$var=";
            $newline = "\n";
            $last_letter = $1;
        }
        print $val;
    }
}
print "\n";

結果:

AA=a1.png,a2.png,a3.png
AA=b1.png,b2.png,b3.png
FF=k1.png,k2.png,k3.png
FF=l1.png,l2.bmp,l3.png
OO=p1.png
OO=y1.png
ZZ=i1.png
ZZ=j1.png
于 2012-04-30T01:23:42.930 に答える