[Perl] unerlaubte Zeichen aus einem String entfernen
-
- Beiträge: 237
- Registriert: 26.04.2009 01:57:27
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Nettetal
-
Kontaktdaten:
[Perl] unerlaubte Zeichen aus einem String entfernen
Guten Tag,
ich habe einen Perl-String $str, welcher einige Sonderzeichen enthalten könnte. Ich möchte aber, dass er nur A-Za-z0-9#.-_ enthält. Gibt es eine Möglichkeit, wie ich den String bereinigen kann, dh., alle anderen Zeichen zu entfernen?
Danke.
ich habe einen Perl-String $str, welcher einige Sonderzeichen enthalten könnte. Ich möchte aber, dass er nur A-Za-z0-9#.-_ enthält. Gibt es eine Möglichkeit, wie ich den String bereinigen kann, dh., alle anderen Zeichen zu entfernen?
Danke.
Re: [Perl] unerlaubte Zeichen aus einem String entfernen
Vielleicht so?
Code: Alles auswählen
$str =~ s/[^A-Za-z0-9#\.\-_]//g;
-
- Beiträge: 237
- Registriert: 26.04.2009 01:57:27
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Nettetal
-
Kontaktdaten:
Re: [Perl] unerlaubte Zeichen aus einem String entfernen
danke, läuft super!
Re: [Perl] unerlaubte Zeichen aus einem String entfernen
Dafür ist eigentlich tr// gedacht:
Code: Alles auswählen
$str =~ tr/A-Za-z0-9#.-_//cd;
-
- Beiträge: 237
- Registriert: 26.04.2009 01:57:27
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Nettetal
-
Kontaktdaten:
Re: [Perl] unerlaubte Zeichen aus einem String entfernen
Nett, aber jetzt möchte ich natürlich auch noch Akzente von den Buchstaben entfernen. Dafür habe ich sowas hier gebastelt:
Das funktioniert aber nicht! Ich weiß auch nicht, warum.
EDIT: Gibt es eine Möglichkeit, wie man die Sonderzeichen in die Hexadezimalschreibweise (\x) konvertieren kann?
Code: Alles auswählen
# remove accents
$str =~ y/ÀÁÂÃÄÅĂĄàáâãäåăą/AAAAAAAAaaaaaaaa/;
$str =~ y/ÇĆČçćč/CCCccc/;
$str =~ y/ĎĐďđ/DDdd/;
$str =~ y/ÈÉÊËĘĚèéêëęě/EEEEEEeeeeee/;
$str =~ y/Ğğ/Gg/;
$str =~ y/ÌÍÎÏİìíîïı/IIIIIiiiii/;
$str =~ y/ĹĽŁĺľł/LLLlll/;
$str =~ y/ÑŃŇñńň/NNNnnn/;
$str =~ y/ÒÓÔÕÖØŐòóôõöøő/OOOOOOOooooooo/;
$str =~ y/ŔŘŕř/RRrr/;
$str =~ y/ŚŞŠśşš/SSSsss/;
$str =~ y/ŢŤţť/TTtt/;
$str =~ y/ÙÚÛŲÜŮŰùúûųüůű/UUUUUUUuuuuuuu/;
$str =~ y/Ýýÿ/Yyy/;
$str =~ y/ŹŻŽźżž/ZZZzzz/;
EDIT: Gibt es eine Möglichkeit, wie man die Sonderzeichen in die Hexadezimalschreibweise (\x) konvertieren kann?
Re: [Perl] unerlaubte Zeichen aus einem String entfernen
So?vwochnik hat geschrieben: EDIT: Gibt es eine Möglichkeit, wie man die Sonderzeichen in die Hexadezimalschreibweise (\x) konvertieren kann?
Code: Alles auswählen
$ echo 'äöüßabz' | perl -pne 's/[^A-Za-z0-9]/sprintf("%x", ord($&))/eg'
e4f6fcdfabza
Meine Whishlist
:wq!
:wq!
-
- Beiträge: 237
- Registriert: 26.04.2009 01:57:27
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Nettetal
-
Kontaktdaten:
Re: [Perl] unerlaubte Zeichen aus einem String entfernen
Wie kann ich die Hex-Codes denn dann durch normale Buchstaben ersetzen. Ein Beispiel wäre sehr hilfreich.
Danke.
Danke.
Re: [Perl] unerlaubte Zeichen aus einem String entfernen
Ähm, was genau willst Du denn nun?vwochnik hat geschrieben:Wie kann ich die Hex-Codes denn dann durch normale Buchstaben ersetzen. Ein Beispiel wäre sehr hilfreich.
Meine Whishlist
:wq!
:wq!
Re: [Perl] unerlaubte Zeichen aus einem String entfernen
Funktioniert hier übrigens einwandfrei.vwochnik hat geschrieben:Nett, aber jetzt möchte ich natürlich auch noch Akzente von den Buchstaben entfernen. Dafür habe ich sowas hier gebastelt:
Das funktioniert aber nicht! Ich weiß auch nicht, warum.
Meine Whishlist
:wq!
:wq!