Denis: Html-Sonderzeichen mit javascript umwandeln

Hallo,

wie kann ich in Javascript die Sonderzeichen wie   in ein Normales Leerzeichen umwandeln?

Brauche das für einen Stringvergleich, einmal bekomme ich den Sring als codierten String (also mit   usw.) und einmal als normalen String (also als richtiges Leerzeichen).

Danke Denis

  1. Hallo Denis,

    Ich habe mal irgendwann ein Scripte geschrieben, dass Zeichen in ihre Html-Entities verwandelt. Wenn du daran ein bisschen bastelst, wird es das auch umgekehrt koennen.

    /**
     * htmlEntities
     *
     * Convert all applicable characters to HTML entities
     *
     * object string
     * return string
     *
     * example:
     *   test = 'äöü'
     *   test.htmlEntities() //returns 'äöü'
     */

    String.prototype.htmlEntities = function()
    {
      var chars = new Array ('&','à','á','â','ã','ä','å','æ','ç','è','é',
                             'ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô',
                             'õ','ö','ø','ù','ú','û','ü','ý','þ','ÿ','À',
                             'Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë',
                             'Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö',
                             'Ø','Ù','Ú','Û','Ü','Ý','Þ','€','"','ß','<',
                             '>','¢','£','¤','¥','¦','§','¨','©','ª','«',
                             '¬','­','®','¯','°','±','²','³','´','µ','¶',
                             '·','¸','¹','º','»','¼','½','¾');

    var entities = new Array ('amp','agrave','aacute','acirc','atilde','auml','aring',
                                'aelig','ccedil','egrave','eacute','ecirc','euml','igrave',
                                'iacute','icirc','iuml','eth','ntilde','ograve','oacute',
                                'ocirc','otilde','ouml','oslash','ugrave','uacute','ucirc',
                                'uuml','yacute','thorn','yuml','Agrave','Aacute','Acirc',
                                'Atilde','Auml','Aring','AElig','Ccedil','Egrave','Eacute',
                                'Ecirc','Euml','Igrave','Iacute','Icirc','Iuml','ETH','Ntilde',
                                'Ograve','Oacute','Ocirc','Otilde','Ouml','Oslash','Ugrave',
                                'Uacute','Ucirc','Uuml','Yacute','THORN','euro','quot','szlig',
                                'lt','gt','cent','pound','curren','yen','brvbar','sect','uml',
                                'copy','ordf','laquo','not','shy','reg','macr','deg','plusmn',
                                'sup2','sup3','acute','micro','para','middot','cedil','sup1',
                                'ordm','raquo','frac14','frac12','frac34');

    newString = this;
      for (var i = 0; i < chars.length; i++)
      {
        myRegExp = new RegExp();
        myRegExp.compile(chars[i],'g')
        newString = newString.replace (myRegExp, '&' + entities[i] + ';');
      }
      return newString;
    }

    Gruß,

    Dieter

    1. Danke für die Antwort, aber habe gerade bemerkt, dass es sich um ASCII-Zeichen handelt und nicht um HTML-Sonderzeichen.

      Kann mir da jemand eine Lösung für geben?

      Denis

      1. Hallo,

        Danke für die Antwort, aber habe gerade bemerkt, dass es sich um ASCII-Zeichen handelt und nicht um HTML-Sonderzeichen.

        Was sind »ASCII-Zeichen« und wieso muss man sie umwandeln?

        Mathias

        1. Also ich meine folgendes:

          &#x0020; Dieses Zeichen ist laut Ascii-Code ein Leerzeichen und wird auch als solches im Browser dargestellt. Ich will diese Zeichen aber in Javascript vor der Ausgabe umwandeln, damit ich ein String Vergleich machen kann. Geht das irgendwie???

          Denis

          1. Hi Denis,

            Ich will diese Zeichen aber in Javascript vor der Ausgabe umwandeln,

            In was?

            Geht das irgendwie???

            Ja. Wozu hab ich ich dir in https://forum.selfhtml.org/?t=111654&m=703865 gezeigt, wie du an alles dazu Notwendige kommst? Lesen musst du schon selber. Wenn du bei der Anwendung deines neu erworbenen Wissens ein Problem hast, kannst du gerne wieder nachfragen, aber eine fertige Lösung wird dir wohl keiner bieten.

            Live long and prosper,
            Gunnar

            --
            „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
            1. Hallo,

              habe es jetzt fast fertig, jedoch wird mittels replace() nur die erste vorkommende Stelle ausgetauscht?? wie sage ich denn, dass replace() alle vorkommenden Stellen austauscht, an dem der reguläre ausdruck stimmt? Bsp:

              test ="1&#x002E;1&#x002E;"

              neu = test.replace("/&#x002E;/",".")

              --> als ergebnis steht dann in der var neufolgendes:

              1.1&#x002E;

              aber es sollte eigentlich 1.1. heissen.

              Hoffe, dass mein Problem besser verstanden wurde...

              Denis

              1. test ="1&#x002E;1&#x002E;"

                neu = test.replace("/&#x002E;/",".")

                neu = test.replace(/&#x002E;/g, ".");

                Struppi.

          2. &#x0020; Dieses Zeichen ist laut Ascii-Code ein Leerzeichen und wird auch als solches im Browser dargestellt. Ich will diese Zeichen aber in Javascript vor der Ausgabe umwandeln, damit ich ein String Vergleich machen kann. Geht das irgendwie???

            So ganz schlau werd ich aus deiner Frage nicht, ursprünglich hast du nach HTML Entities  (&nbsp; was aber mitnichten ein Leerzeichen ist) gefragt und jetzt nach ASCII Codes.

            Vielleicht beschreibst du einmal genauer das Problem. Mit was für einen String willst du vergleichen und woher kommen die Sonderzeichen?

            Struppi.

  2. Hi Denis,

    wie kann ich in Javascript die Sonderzeichen wie &nbsp; in ein Normales Leerzeichen umwandeln?

    Gehen wir mal davon aus, dass SELFHTML weiterhilft. Click.

    Da gibt’s ein Kapitel zu JavaScript; da sollte es wohl drinstehen. Click.

    In der Einführung wohl nicht, Sprachelemente beschreibt die Syntax, die Beispiele wären wohl zu speziell, das wäre Zufall. Bleibt also die Objektreferenz. Click.

    Uj, eine längere Liste. Worum ging’s doch gleich? Achja, Strings. Da haben wir’s ja: String. Click.

    Verdammt, schon wieder so’ne lange Liste. Was wollen wir mit den Strings doch gleich anstellen? Achja, etwas ersetzen. Na, wer findet’s als erster? Ich hab’s: replace(). Click.

    Hm, reguläre Ausdrücke, was’n das? Hätte ja da mal erklärt werden können. Oh, das ist ja was: RegExp. Click.

    Verdammt, so schwere Kost! Wonach suchen wir hier eigentlich? Ääh … ah, Leerzeichen. Hm, mal die Suchfunktion des Browsers ausprobieren: Ctrl+F "Leerzeichen".

    "\s" was immer das ist, mal merken, könnte wichtig sein. "\f", "\n", "\t", "\v" achso verstehe, "\s" steht für das alles, sieht ja ganz brauchbar aus. Nur schade, dass das geschützte Leerzeichen nicht dabei ist.

    Na dann müssen wir uns das woanders heraussuchen. Wo waren doch gleich alle Zeichen? Gab’s da nicht unter Windows …? Start > Programme > Zubehör > Systemprogramme > Zeichentabelle. Na, da ist sie ja. Wirklich ganz schön versteckt. Gleichmal eine Verknüfung erstellen. Oder gleich in die Taskleiste.

    Leerzeichen? Leeres Feld? Ach da: U+00A0, Tastenkombination: Alt+160.

    Das muss jetzt als Alternative mit in unseren regulären Ausdruck rein: /[\s ]/.

    Ach, wenn wir schon nach allen möglichen Whitespaces und dem geschützten Leerzeichen suchen, vielleicht wollen wir auch mehrere davon hintereinander durch ein Leerzeichen ersetzen? /[\s ]+/.

    Wirklich schade, dass es ab jetzt „self“ weitergeht.

    Live long and prosper,
    Gunnar

    --
    „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)