Schrift
[thread]10266[/thread]

String spliten



<< |< 1 2 >| >> 11 Einträge, 2 Seiten
case
 2007-08-29 20:25
#98848 #98848
User since
2006-06-30
6 Artikel
BenutzerIn
[default_avatar]
Folgender String sei gegeben :

i_motorart integer, d_kw decimal(7,2), i_kat integer

wie kann ich mittels split und einem regulären Ausdruck das Ganze in ein Array bringen das danach so aussieht :

i_motorart integer
d_kw decimal(7,2)
i_kat integer

oder ist das Ganze mit split nicht lösbar ??

Im Voraus besten Dank !
Ronnie
 2007-08-29 20:33
#98851 #98851
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Code (perl): (dl )
perl -MData::Dumper -e 'print Dumper [split/,\s+/, "i_motorart integer, d_kw decimal(7,2), i_kat integer "]'
case
 2007-08-29 20:52
#98852 #98852
User since
2006-06-30
6 Artikel
BenutzerIn
[default_avatar]
Klar das das geht.
Aber wie mache das Ganze, wenn zwischen Kommas keine Leerzeichen stehen

i_motorart integer,d_kw decimal(7,2),i_kat integer
sid burn
 2007-08-29 20:57
#98853 #98853
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Code (perl): (dl )
1
2
3
my $string = 'i_motorart integer,d_kw decimal(7,2),i_kat integer';
my @werte  = split /,/, $string;
print "$_\n" for my @werte;


Du solltest dir mehr grundlagen aneignen.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
case
 2007-08-29 21:39
#98854 #98854
User since
2006-06-30
6 Artikel
BenutzerIn
[default_avatar]
Ich glaube du hast mein Problem nicht verstanden
das decimal(7,2) darf nicht getrennt werden.
styx-cc
 2007-08-29 21:44
#98855 #98855
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Ronnies Bsp. leicht umgebaut:
[s]
Code: (dl )
perl -MData::Dumper -e 'print Dumper [split/\D,/, "i_motorart integer,d_kw decimal(7,2),i_kat integer"]'
[\s]

Vergiss das einfach ;-)
Pörl.
styx-cc
 2007-08-29 21:59
#98856 #98856
User since
2006-05-20
533 Artikel
BenutzerIn

user image
So funktionierts:
Code: (dl )
perl -MData::Dumper -e 'print Dumper [split/,\D/, "i_motorart integer,$1 d_kw decimal(7,2),$1 i_kat integer"]'
Pörl.
Ronnie
 2007-08-30 00:09
#98859 #98859
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
case+2007-08-29 18:52:21--
Aber wie mache das Ganze, wenn zwischen Kommas keine Leerzeichen stehen

Vorher Kommata zwischen zwei Klammern escapen bzw. durch Semikolon ersetzen und dann splitten?!
vayu
 2007-08-30 12:59
#98878 #98878
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
Code (perl): (dl )
1
2
3
my $t = "i_motorart integer,d_kw decimal(7,2),i_kat integer";
$t =~ s/(\D),(\D)/$1;$2/g;
print Dumper [split/;/, $t];
sid burn
 2007-08-30 13:32
#98883 #98883
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
case+2007-08-29 19:39:13--
Ich glaube du hast mein Problem nicht verstanden
das decimal(7,2) darf nicht getrennt werden.

Achso, davon hast du aber nichts gesagt. ;)

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
my $str    = 'i_motorart integer,d_kw decimal(7,2),i_kat integer';
my @pieces = $str =~ m/(                  # Speichere Wert
                        (?:
                            (?>           # Backtracking verhindern
                                [^,(]+    # Soviele kein Komma und
                                          # öffnen Klammer matchen wie möglich
                            )
                            |             # Oder: Wenn Komma oder Öffnen Klammer gefunden
                            \( [^)]+ \)   # Wenn öffnende Klammer dann bis zur nächsten
                                          # Schließenden Klammer gehen
                        )+                # Bei einem Komma ist hier jetzt ende und ein
                                          # wir haben einen Match
                       )/xg;              # Mit Option g solange wiederholen
                                          # bis wir jeden Treffer haben
print "$_\n" for @pieces;
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2007-08-29 20:25.