2016-08-04 12 views
-3

Wie alle führenden Nullen einer alphanumerischen Zeichenfolge in Perl abgezogen werden?Perl: Stripping führende Null in alphanumerischer Zeichenfolge

Zum Beispiel:

"03ABCDE" --> "3ABCDE"; 

"30ABCDE0123"--> "30ABCDE123"; 

"30XY09ZZZ0001" --> "30XY9ZZZ1" 

EDIT: John Doe wies zur Lösung dieses Problems die richtige Richtung, und ich machte diesen Code, um dieses Problem zu lösen. Vielen Dank!

+1

Sie müssen genauer sein. _Leading Nullen_ bedeutet am Anfang eines Strings. Es sieht so aus, als ob du das nicht willst. – simbabque

+0

Sie müssen eine Look-Ahead-Regex verwenden, um zu überprüfen, ob das folgende Zeichen eine Zahl ist, 0 –

+5

Erstens sieht es so aus, Sie wollen nicht "führenden Nullen" entfernen, Sie wollen führende Nullen und Nullen entfernen folge sofort einem Buchstaben ". Ist das genau? Zweitens ist StackOverflow nicht hier, um Code für Sie zu schreiben. Es ist hier, um Ihnen zu helfen, Probleme in Ihrem Code zu beheben. Bitte zeig uns was du schon hast. Wenn Sie noch keinen Code haben, möchten Sie StackOverflow nicht, Sie möchten einen Programmierer bezahlen. –

Antwort

1

Sie können ein Lookbehind verwenden, um Nullen zu vergleichen, denen keine Ziffern vorangestellt sind. Darüber hinaus müssen Sie am Anfang der Zeichenfolge auch echte führende Nullen angeben.

my @strings = qw(03ABCDE 30ABCDEXY09ZZZ0001); 
foreach (@strings) { 
    print "$_ --> "; 
    s/^0+|(?<=\D)0+//g; 
    print "$_\n"; 
} 

Siehe https://regex101.com/r/xF7uM9/1 für eine Spieldemo.