perl: Frage zu tr

Xanti

Xanti

Mouse Organist
Hallo,

ich möchte unter perl Umlaute ersetzen wie folgt ersetzen:

PHP:
$base =~ s/ä/ae/ig;
$base =~ s/ö/oe/ig;
$base =~ s/ü/ue/ig;
$base =~ s/ß/ss/g;

Ist es möglich, dies auch durch tr zu lösen?

PHP:
$base =~ tr/ÄÖÜäöü/.../

Leider scheitert es daran, dass ich jedes Zeichen nur durch ein Zeichen ersetzen kann und nicht durch ein Doppelzeichen. Vielleicht weiss jemand ne Lösung.

Gruss, Phorus
 
Hallo
Nein, tr kann nur einzelne Zeichen ersetzen.

Gruß Wolfgang
 
Hallo
Kleiner Tipp:
Wenn du viele mögliche Ersetzungen machen musst, dann kann es hilfreich sein, sich dafür ein hash zu basteln.
e.g.
Code:
my %h =( ä => ae, ü => ue, ß => ss);
my $s="där üble string"; #:-)
   foreach my $k (keys %h){
             $s=~s/$k/$h{$k}/g;
      }
...
Besonders wenn du viele Teile hast und flexibel bleiben willst, brauchst du nur dein hash ergänzen.
Auch mit einer map -Funktion gut zu realisieren. ;)

Allerdings wird es etwas tricky, wenn du die Groß/Kleinschreibung beachten musst.
Dann müsstest du noch auf Wortgrenzen matchen, und Worte die nur aus Großbuchstaben bestehen extra filtern.

Gruß Wolfgang
 
Zuletzt bearbeitet:
Gross-/Kleinschreibung ist egal, bei mir ist alles lc. Aber Danke für den Tipp, er verkürzt meinen Quellcode erheblich. :)

Gruss, Phorus
 

Ähnliche Themen

Problem mit HSPA+ Modem Huawei E353 - Installation unmöglich?

Windows clients können nicht mehr auf lange laufendes System zugreifen

NagiosGrapher 1.7.1 funktioniert nicht

mehrzeiligen Text per Skript ersetzen

[Suche] - Hilfe bei der Überarbeitung eines bash-Scripts

Zurück
Oben