Zeichen ersetzen

OkaminoChizu

Mitglied
Hallo,

ich lerne gerade Javascript mit einem Buch, in dem die Übungsaufgabe gestrellt wurde, in einer Zeichenkette mit einer Funktion alle Umlaute durch die entsprechende Entity zu ersetzen. Allerdings funktioniert es nicht und ich finde den Fehler nicht. Würde mich über Hilfe freuen!

HTML:
<html>
<head>
<title> 28.8.1 Umlaute </title>
</head>

<body>
<script type="text/javascript">
var zeichenkette = "Öl Hügel Äpfel";
function ersetzeUmlaute(zeichenkette)
{
 var neu ="";
 for(var i=0; i<zeichenkette.length; i++)
 {
  switch (zeichenkette.charAt(i)) 
  {
   case "ä": neu += '&auml'; break;
   case "Ä": neu += '&Auml'; break;
   case "ö": neu += '&ouml'; break;
   case "Ö": neu += '&Ouml'; break;
   case "ü": neu += '&uuml'; break;
   case "Ü": neu += '&Uuml'; break;  
   default: neu += zeichenkette.charAt(i); break;
  }
}
return neu;
}
document.write(neu);
</script>
<body onLoad="ersetzeUmlaute(zeichenkette)">
</body>
</html>
 
Hi

Wenn du aus dem Ersetzen schon eine Funktion machst, musst du diese auch aufrufen!
Vor der Ausgabe
Code:
neu = ersetzeUmlaute(zeichenkette);

Gruß
 
Hallo,

die Struktur deines HTML-Dokuments ist fehlerhaft: Das BODY-Tag taucht dort zweimal auf. Außerdem fehlt das Semikolon am Ende jeder Umlaut-Entität.

Bei mir würde es so funktionieren:
HTML:
<html>
  <head>
    <title> 28.8.1 Umlaute </title>
    <script type="text/javascript">

      var dreiWorte = "Öl Hügel Äpfel";

      function ersetzeUmlaute(zeichenkette)
      {
        var neu ="";
        for(var i=0; i<zeichenkette.length; i++)
        {
          switch (zeichenkette.charAt(i))
          {
            case "ä": neu += '&auml;'; break;
            case "Ä": neu += '&Auml;'; break;
            case "ö": neu += '&ouml;'; break;
            case "Ö": neu += '&Ouml;'; break;
            case "ü": neu += '&uuml;'; break;
            case "Ü": neu += '&Uuml;'; break;
            default: neu += zeichenkette.charAt(i); break;
          }
        }
        return neu;
      }

    </script>
  </head>

  <body onLoad="document.write(ersetzeUmlaute(dreiWorte))">
  </body>

</html>
 
Hi,

oder als kleine Spielerei: die Ersetzungsroutine mit regulären Ausdrücken als zusätzliche Methode im Prototyp des String-Objekts.
Code:
String.prototype.encodeEntities = function(){
  var replaceHash = {
    '228': "&auml;", /* ä */
    '196': "&Auml;", /* Ä */
    '246': "&ouml;", /* ö */
    '214': "&Ouml;", /* Ö */
    '252': "&uuml;", /* ü */
    '220': "&Uuml;"  /* Ü */
  };

  return (this.replace(/[äÄöÖüÜ]/g, function (strMatch){
    return replaceHash[strMatch.charCodeAt(0)];
  }));
};

var dreiWorte = "Öl Hügel Äpfel";
alert(dreiWorte.encodeEntities());
Ciao
Quaese
 
Danke! Eigentlich funktioniert ers jetzt auch, aber wenn ich die Semikolon einsetze, wird es automatisch als Umlaut ausgegen. Woran liegt das, bzw. was kann ich tun?
 

Neue Beiträge

Zurück