Gunnar Bittersmann: Dezimal codierte Strings decodieren

Beitrag lesen

@@MudGuard:

nuqneH

In u scheint der Inhalt der Klammer übergeben zu werden?

Ja.

Was passiert, wenn es mehrere Klammern gibt?
Also so:
return this.replace(/&#([0-9]+)|x([0-9a-f]+);/gi, function ...

Nicht ganz. /&#([0-9]+);|&#x([0-9a-f]+);/gi oder /&#(?:([0-9]+)|x([0-9a-f]+));/gi

Ist u dann ein Array? Oder gibt es einen 3. Parameter?

Letzteres, wie im von suit verlinkten http://ejohn.org/blog/search-and-dont-replace/ zu lesen ist.

Ich war mir nicht sicher, ob veroderte Klammerausdrücker dann verschiedene Parameter oder denselben befüllen. Ersteres ist der Fall.

Dann könnte man ggf. noch auf den substr verzichten, müßte dann halt die Unterscheidung anhand der Länge des ersten/zweiten Klammerinhalts (der ja nur dann leer bzw. null bzw. undefined sein kann, wenn der jeweils andere Zweig matcht) ...

Ja.

String.prototype.unescape = function ()  
{  
  return this.replace(/&#(?:([0-9]+)|x([0-9a-f]+));/gi, function (m, d, h) { return String.fromCharCode(d ? parseInt(d, 10) : parseInt(h, 16)); });  
};

Qapla'

--
Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
(Mark Twain)