Thread CSV Feldlänge bestimmen
(16 answers)
Opened by sara456 at 2014-05-23 16:54
Hallo sara456,
ein Beispiel als Startpunkt. Du kannst hier auch schon die ZielStellen ändern. Und bei Alphanumerisch wird die Länge mit führenden Leerzeichen aufgefüllt. Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 #!C:/Programme/Perl use strict; use warnings; my @mappingDaten = ( '0 0 5 Numerisch' , '1 1 6 Numerisch' , '2 2 9 Numerisch' , '3 3 14 Alphanumerisch' , '4 4 5 Numerisch' , '5 5 28 Alphanumerisch' # , '6 6 14 Alphanumerisch' es sind nur 6 Stellen! ); while (my $inputDaten = <DATA>){ chomp $inputDaten; my @inputarray = split /;/, $inputDaten; my @outputarray; foreach my $mapping (@mappingDaten) { my ($Stelle, $ZielStelle, $Laenge, $Typ) = split(/ /,$mapping); if ($Typ eq 'Numerisch') { $outputarray[$ZielStelle] = sprintf("%0" . $Laenge . "d", ($inputarray[$Stelle] or 0)); } elsif ($Typ eq 'Alphanumerisch') { $outputarray[$ZielStelle] = sprintf("% " . $Laenge . "s", ($inputarray[$Stelle] or '')); } } print join (";", @outputarray) . "\n"; } __DATA__ 12;;654;Test;12345;Test 13;;265;Test;12345;Test HTH Grüße payx |