Thread array splitten und in string überführen (15 answers)
Opened by anou at 2010-10-31 20:53

Linuxer
 2010-10-31 21:59
#142370 #142370
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
Quote
also ich hab ein txt file mit 3 spalten. die erste besteht aus text, die anderen 2 aus zahlen. es befinden sich 93 zeilen in dem array, aber dafür würde ich eine schleife verwenden

Ok, das habe ich - glaube ich - verstanden.

Code: (dl )
1
2
3
4
A A1 A2
B B1 B2
C C1 C2
... (weiter bis 93)



Quote
. desweiteren habe ich ein array mit 6 einzelnen spalten aber einzeilig.

Ein Array ist eine Datenstruktur, die aus mehreren Elementen besteht, die (IMHO) erstmal nichts mit Spalten oder Zeilen zu tun hat...
Ich erkenne den Zusammenhang nicht. Möchtest Du zum Ausdruck bringen, dass ein Array-Element aus einer Zeile besteht, die selber aus 6 Spalten besteht?

Code: (dl )
1
2
3
4
@array = (
'a1 a2 a3 a4 a5 a6', # element 1: string aus 6 worten
'b1 b2 b3 b4 b5 b6', # element 2: string aus 6 worten
);


Quote
ich würde gern alle einzelnen spalten in einzelnen arrays haben

Hm, also die 6 "Spalten" sollen zu einem Array aus 6 Elementen werden?

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# war vorher element 1 
@array1 = (
'a1',
'a2',
'a3',
'a4',
'a5',
'a6',
);

# war vorher element 2
@array2 = (
'b1',
...
);



Quote
und hinterher alle mit einem string zu einer zeile mit 9 splaten zusammensetzen.

OK, die 3 eingelesenen Elemente (also z.B. ("A","1","1")) sollen mit den 6 Elementen (also z.B. ("a1","a2",...,"a6")) zu einem String verbunden werden.

Quote
hoffe das ist verständlich ausgedrückt

Wie Du siehst, tu ich mir immer noch etwas schwer....
Zeige doch mal anhand Beispielen, was Du meinst, wenn ich oben es noch nicht richtig erraten habe.

Gruß,
Linuxer

Mal ein modifizierter Gedanke:
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
#! /usr/bin/perl
use strict;
use warnings;
use Data::Dumper;

# datei oeffnen, etc.

my @array = (
    'a1 a2 a3 a4 a5 a6',
    'b1 b2 b3 b4 b5 b6',
);

# "datei" auslesen
while ( my $line = <DATA> ) {
    
    chomp $line;                # umbruch entfernen

    # Sollte 3 Felder (z.B. A,A1,A2) ergeben
    my @fields = split m{ }, $line;

    # fuer jeden String (z.B. "a1 a2 ... a6")
    for my $string ( @array ) {
        # string auftrennen
        my @additional = split m{ }, $string;

        # elemente beider arrays zum string zusammensetzen und ausgeben
        print join( ', ', @fields, @additional ), "\n";
    }
}

__DATA__
A A1 A2
B B1 B2
C C1 C2


edits: + Kommentare in Beispiele eingebaut, Beispiele angeglichen
Last edited: 2010-10-31 22:08:37 +0100 (CET)
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread array splitten und in string überführen