PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Perl entfernen von Zeichen



rthill
30-09-2002, 11:30
Hallo

Ich wollte mich eigentlich nur erkundigen ob es eine möglichkeit gibt, die ersten 6 Zeichen einer jeden Zeile zu ersetzen und den Rest der Zeichen zu ersetzen falls diese ungültig sind.
Gültige Zeichen sind bei mir 0-9, und die ersten zu ersetzenden Zeichen sind +352() meine Ausgabe könnte also wie folgt aussehen: +352()12345-6789, also müsste ich hier die +352() durch eine 0 ersetzen und zusätzlich noch das - ersetzen durch nichts. Später sollte meine Ausgabe dann so aussehen: 0123456789

Irgendjemand eine Idee wie ich das mit PERL schaffe ?

Danke im Voraus.

Sion
30-09-2002, 17:42
Original geschrieben von rthill
Hallo

Ich wollte mich eigentlich nur erkundigen ob es eine möglichkeit gibt, die ersten 6 Zeichen einer jeden Zeile zu ersetzen und den Rest der Zeichen zu ersetzen falls diese ungültig sind.
Gültige Zeichen sind bei mir 0-9, und die ersten zu ersetzenden Zeichen sind +352() meine Ausgabe könnte also wie folgt aussehen: +352()12345-6789, also müsste ich hier die +352() durch eine 0 ersetzen und zusätzlich noch das - ersetzen durch nichts. Später sollte meine Ausgabe dann so aussehen: 0123456789

Irgendjemand eine Idee wie ich das mit PERL schaffe ?

Danke im Voraus.


$line = "+352()12345-6789";
#remove leading ""+352()":
$line =~ s/^\+352\(\)/0/;
#remove all "non-digits":
$line =~ s/[^0-9]//;

Hoffe das geht so....

offe
01-10-2002, 16:28
Hallo,
sieht verdammt nach regex aus. Kenn mich aber in Perl nicht so gut aus (Problem mit + Zeichen). Wollte eigentlich nur sagen, daß du bei Ländern mit nur zwei Länderkennzeichen Probleme bekommst.
Als erstes überprüfst du ob nur die Zeichen (/()[0-9]+-) vorkommen. Dann ersetzt du alles bis ) durch 0 und beim Rest das - durch nichts.

Offe