Announcement

Collapse
No announcement yet.

String Zeichen für Zeichen ersetzen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • String Zeichen für Zeichen ersetzen

    Hallo Leute,

    ich möchte einen String der eine Telefonnummer enthält (also Zahlen 0-9, Leerzeichen "-", "/" ) Zeichen für Zeichen mit der dazugehörigen HTML-Entitie ersetzen. Problem ist ich habe keinen Ansatz wie ich beginnen soll.
    Das schwierige für mich ist, das ja Zahlen mehrmals vorkommen können und nach ersetzen einer Zahl soll es bei der nächsten Suche die Zahlen in bereits gesetzten Entities nicht mit überschreiben.
    Würde mich freuen, wenn jemand einen Ansatz oder Script für mich hätte.

  • #2
    Was ist für eine Ziffer (0-9) die dazugehörige HTML-Entity?

    Unabhängig davon, kann man für sowas einen regulären Ausdruck benutzen. Dieser ersetzt jedes Vorkommen nur einmal

    perl reguläre ausdrücke

    Siehe dort auch

    string =~ tr/SUCHEN/ERSETZEN/Optionen
    Zuletzt editiert von Christian Marquardt; 18.10.2010, 10:49.
    Christian

    Comment


    • #3
      "& #48" ist zum Beispiel die 0.
      reguläre Ausdrücke sind für mich hier irgendwie nicht passend. Das Problem ist, das sich durch die Entities die String-Länge ständig verlängert. Weiterhin würde ich z.b. nach Ersetzen aller "0" dann bei der weiteren Suche mit ersetzen der 4 und 8 das bereits gesetzte entitie für die "0" zerstören.

      P.S. Das Leerzeichen zwischen & und # musste ich setze, da er ja sonst nur 0 anzeigt

      Comment


      • #4
        Weiterhin würde ich z.b. nach Ersetzen aller "0" dann bei der weiteren Suche mit ersetzen der 4 und 8 das bereits gesetzte entitie für die "0" zerstören.
        Nein, nur wenn du das nicht in einem regl. Ausdruck machen würdest (tr), sondern in mehreren

        reguläre Ausdrücke sind für mich hier irgendwie nicht passend.
        Seltsam, aber dann musst du halt die gute alte Stringverarbeitung nutzen. Auf string =~ tr/SUCHEN/ERSETZEN/Optionen sein nochmals hingewiesen

        Das Problem ist, das sich durch die Entities die String-Länge ständig verlängert.
        Das liegt dann wohl am Vorgehen, man kann die Ersetzungen auch in eine neue Variable schreiben lassen. Auch eine Verlängerung der "Ursprungsvariable" birgt eigentlich keine unlösbaren Probleme
        Christian

        Comment


        • #5
          ich hab jetzt mal etwas probiert.

          es hängt aber noch irgendwo. das erste Zeichen wird im string $call nicht weg geschnitten.

          Code:
          my $new;
          my $call = '358-755456';
            	my %switch = (
            	'0' =>   '0',
            	'1' =>   '1',
            	'2' =>   '2',
            	'3' =>   '3',
            	'4' =>   '4',
            	'5' =>   '5',
            	'6' =>   '6',
            	'7' =>   '7',
            	'8' =>   '8',
            	'9' =>   '9',
            	' ' =>   ' ',
            	'-' =>   '-',
            	);
            	my $laenge = length($call);
            	for (my $s=0; $s<$laenge; $s++){
            		my $zeichen = substr($call, 0, 1);
            		$new .= ($switch{$zeichen});
            	     }
            	     $call = $new;
            	     print $call;
          wo liegt mein Fehler?

          Comment


          • #6
            Code:
            #! usr/bin/perl
            %translate = (
                    '0' => '&#48',
                    '1' => '&#49',
                    '2' => '&#50',
                    '3' => '&#51',
                    '4' => '&#52',
                    '5' => '&#53',
                    '6' => '&#54',
                    '7' => '&#55',
                    '8' => '&#56',
                    '9' => '&#57',
                );
            $eingabe="136963443425643451";
            $ausgabe="";
            for($i=0;$i<length($eingabe);$i++)
            {
            $ausgabe.=$translate{substr($eingabe, $i,1)};
            }
            print $ausgabe;
            Christian

            Comment


            • #7
              wo liegt mein Fehler?


              substr($call, 0, 1)
              Christian

              Comment


              • #8
                besten dank. funzt prima. ich hoffe habe nicht zu sehr genervt.

                Comment

                Working...
                X