Schrift
[thread]8417[/thread]

Zeichenkette aus String "heraustrennen"

Leser: 1


<< >> 4 Einträge, 1 Seite
Kalmuecke
 2006-10-14 22:22
#70777 #70777
User since
2006-10-14
68 Artikel
BenutzerIn
[default_avatar]
Hallo,

Frage an die Perl-Experten!

Wie muss ich vorgehen, wenn ich einen String habe bzw. eine Zeile, die komplett aus einer Datei eingelesen wurde und aus dieser Zeile heraus eine Zeichenkette, die eine Zahl beinhaltet, heraussplitten möchte?

Kurz: ich möchte aus einem String eine bestimmte Zeichenkette (in diesem Fall eine Error-Code-Nummer) heraustrennen und dann damit weiterarbeiten!

bspw.
"mein text ist so lang: Error 123 hier geht der text weiter"
"mein text ist so lang: Error 99 hier geht der text weiter"

wie geht man da vor?? reguläre ausdrücke?

Danke im voraus!

Gruss

Kalmuecke
sid burn
 2006-10-14 22:50
#70778 #70778
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
my @file = (
'mein text ist so lang: Error 123 hier geht der text weiter',
'mein text ist so lang: Error 99 hier geht der text weiter',
);

my @fehler;
for (@file) {
s/(Error \d+)//g;
push @fehler, $1;
}

print "$_\n" for @file;
print "$_\n" for @fehler;

Ausgabe:
Code: (dl )
1
2
3
4
mein text ist so lang:    hier geht der text weiter
mein text ist so lang: hier geht der text weiter
Error 123
Error 99


Wenn du direkt eine Datei bearbeiten möchtest empfiehlt sich Tie::File zu benutzen.\n\n

<!--EDIT|sid burn|1160852115-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
bloonix
 2006-10-14 22:51
#70779 #70779
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use strict;
use warnings;
use Data::Dumper;

my @vfile = (
  'mein text ist so lang:   Error 123 hier geht der text weiter',
  'mein text ist so lang:   Error 99 hier geht der text weiter'
);

my @errs;

while (defined (my $line = shift @vfile)) {
  push @errs, $line =~ /(Error \d+)/;
  # fuer mehrere Fehlermeldungen in einer Zeile
  # push @errs, $_ for $line =~ /(Error \d+)/g;
}

print Dumper(\@errs);


Aber noch viel, viel interessanter koennte fuer das perlretut sein!\n\n

<!--EDIT|opi|1160851997-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
renee
 2006-10-15 13:34
#70780 #70780
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=opi,14.10.2006, 20:51]
Code: (dl )
1
2
3
4
5
6
7
8
9
[...]

while (defined (my $line = shift @vfile)) {
push @errs, $line =~ /(Error \d+)/;
# fuer mehrere Fehlermeldungen in einer Zeile
# push @errs, $_ for $line =~ /(Error \d+)/g;
}

[...]
[/quote]
Man kann bei mehreren Fehlermeldung in einer Zeile auch einfach
Code: (dl )
push @errs, $line =~ /(Error \d+)/g;
machen, da man push auch eine Liste von einzufügenden Elementen übergeben kann.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 4 Einträge, 1 Seite



View all threads created 2006-10-14 22:22.