Thread CSV Feldlänge bestimmen (16 answers)
Opened by sara456 at 2014-05-23 16:54

payx
 2014-05-23 21:07
#175694 #175694
User since
2006-05-04
564 Artikel
BenutzerIn

user image
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

View full thread CSV Feldlänge bestimmen