Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7359[/thread]

String bearbeiten



<< |< 1 2 >| >> 14 Einträge, 2 Seiten
Gast Gast
 2005-10-17 11:04
#58920 #58920
Hallo,

ich muss gerade meine Studienarbeit in Perl schreiben. Ich habe da folgendes Problem.

Aus folgendem String: 00XXX.000XX.00XXX.0000.0000 sollen alle Punkte und die Nullen wegfallen. ein x kann für eine beliebige Zahl 0-9 stehen. Die 8 X entsprechen einer Artikelnummer.

Danke im Voraus.

Gruß Daniel
Relais
 2005-10-17 11:44
#58921 #58921
User since
2003-08-06
2246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
m/00(\d{3})\.000(\d\d).00(\d{3})\.0000.0000/
and print "$1$2$3";


Siehe
perldoc perlintro
perldoc perlrequick
perldoc perlre
perldoc perlretut
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop (Termin wird noch gesucht) 2025 in München.

Winter is Coming
vayu
 2005-10-17 11:57
#58922 #58922
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
können die X aus 0-9 oder 1-9 besetehen? wenn aus 1-9 dann geht mein vorschlag. Wenn aus 0-9 nimm den eins über mir :D

Code: (dl )
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/perl

use strict;
use warnings;

my $string = "00XXX.000XX.00XXX.0000.0000";

$string =~ tr/0.//d;

print $string;



edit: hatte aus versehen X ins tr eingetragen anstatt 0 -.-\n\n

<!--EDIT|vayu|1129537735-->
Hindin
 2005-10-17 12:58
#58923 #58923
User since
2005-10-17
2 Artikel
BenutzerIn
[default_avatar]
Hallo,

es kommen 0-9 vor.

Ich habe folgendes versucht.
Code: (dl )
1
2
3
my $test = @$ref[3];
$test =~ m/00(\d{3})\.000(\d\d).00(\d{3})\.00000.00000 /;
print $test."\n";

Funktioniert leider nicht. Was mach ich falsch?

in $test steht dann zum Beispiel: 00117.00031.00846.00000.00000


Gruß Daniel
vayu
 2005-10-17 12:59
#58924 #58924
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
fehlermeldungen? ausgaben?

edit: tippfehler bei relais entdeckt. ein paar punkte nicht escaped

Code: (dl )
1
2
m/00(\d{3})\.000(\d\d)\.00(\d{3})\.0000\.0000/
and print "$1$2$3";


probier das mal.

Bei mir funktionierts allerdings mit Relais' code genauso wie mit meinem. Keine Ahnung was du falsch machst :)

wie gesagt, gib mal ein paar ausgaben oder fehlermeldungen her.\n\n

<!--EDIT|vayu|1129539857-->
Taulmarill
 2005-10-17 13:07
#58925 #58925
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
der m// operator verändert das $test nicht. die zu filternden teile des regex werden lediglich in die variablen $1, $2 und $3 geschrieben. das war doch eigendlich aus relais posting ersichtlich.
da ein regex die werte aber auch zurückgeben kann, anstatt sie nur in reservierte variablen zu schreiben, bevorzuge ich übrigens folgende schreibweise:
Code: (dl )
1
2
3
4
my $input = '00117.00031.00846.00000.00000';
my @fetch = $input =~ m/00(\d\d\d)\.000(\d\d)\.00(\d\d\d)\.00000\.00000/;
my $res = join "", @fetch;
print "$res\n";
\n\n

<!--EDIT|Taulmarill|1129540173-->
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Hindin
 2005-10-17 13:53
#58926 #58926
User since
2005-10-17
2 Artikel
BenutzerIn
[default_avatar]
Ok also das hat nun funktioniert, nun sehe ich gerade dass es auch so genannte X-Artikel gibt. Also 12345XXX. Irgendwo kann ein X stehen. Beudet wohl dass es eine Gruppe von Artikeln gibt die zusammen gehören. Wie löse ich den nun das?

Achso ich habe noch nie in perl was gemacht. Hab das als Studienarbeit aufs Auge gedrückt bekommen. Entschuldigt daher die blöde Fragerei.

Gruß Daniel
vayu
 2005-10-17 14:15
#58927 #58927
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
[quote=Relais,17.10.2005, 09:44]Siehe
perldoc perlintro
perldoc perlrequick
perldoc perlre
perldoc perlretut[/quote]
wenn du das als studienarbeit bekommen hast schau dir am besten nochmal Relais post an :)

die perldoc rufst du auf indem du die einzelnen Zeilen einfach in der Konsole eingibst. Also Cmd unter Windows oder einfach in der Linux Shell

wichtig für einen perl neuling auf jeden Fall

perlintro

Wichtig für dich damit du mit regulären ausdrücken arbeiten lernst alles mit

"perlre"-

:)\n\n

<!--EDIT|vayu|1129544352-->
renee
 2005-10-17 15:30
#58928 #58928
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
http://regenechsen.de/ ist auch ganz gut für den Einstieg in Reguläre Ausdrücke...
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/
pq
 2005-10-17 19:21
#58929 #58929
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Hindin,17.10.2005, 10:58]Funktioniert leider nicht. Was mach ich falsch?[/quote]
abtippen will gelernt sein.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2005-10-17 11:04.