Gunnar Bittersmann: Dezimal codierte Strings decodieren

Beitrag lesen

@@suit:

nuqneH

Es gibt die Methode String.[ref:self812;javascript/objekte/string.htm#from_char_code@title=fromCharCode](), die das Zeichen zu einen Codepoint (den man aus einer NCR erhält) liefert.

Warum eine funktion?

Darum:

String.prototype.unescape = function ()  
{  
  return this.replace(/&#([0-9]+);/g, function (m, u) { return String.fromCharCode(parseInt(u, 10)); });  
};
var s = "It's Goin' Down";  
s = s.unescape();  
alert(s);

Das lässt sich auch auf hexadezimale NCRs erweitern:

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

Etwas unschön daran, dass man zweimal mit einem regulären Ausdruck drüber muss.

Qapla'

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