Frage von NeoGriever, 47

Javascript \137\120\125\143\150\110\141\162\167\155\64 zu _PUchHarwm4. Nur wie?

Heyho.

Ich scheitere gerade an einer mickrigen Aufgabe.

Ich habe folgenden String-Wert:

\137\120\125\143\150\110\141\162\167\155\64

Und dieser soll zu

_PUchHarwm4

umgewandelt werden.

Wer kann mir da helfen und mich auf den richtigen Pfad bringen? Ich kapier nicht, warum ich das nicht hinbekomme.

Wichtig: es muss mit Javascript umgewandelt werden.

Argh. ich bin am verzweifeln ...

Inzwischen habe ich eine kleinigkeit rausgefunden, die mir aber umso unverständlicher rüberkommt.

101 ist A
102 ist B
103 ist C
104 ist D
105 ist E
106 ist F
107 ist G
110 ist H
111 ist I
112 ist J
113 ist K
114 ist L
115 ist M
116 ist N
117 ist O
120 ist P
121 ist Q
122 ist R
123 ist S
124 ist T
125 ist U
126 ist V
127 ist W
130 ist X
131 ist Y
132 ist Z

Wie man sieht, fehlen da die zahlen 8 und 9 ... Ich raff nicht, wie das umgesetzt wird? O_o

Antwort
von Sarkophator, 23

Die CharacterCodes der Zeichen sind im Oktal-System angegeben, das erkennt man an dem vorangestellten Backslash. Deswegen gibts bei den Zahlen auch keine 8er und 9er.

JavaScript macht das eigentlich automatisch, aber alternativ kannst du das auch mittels Regular Expressions ersetzen:

var str = "\\137\\120\\125\\143\\150\\110\\141\\162\\167\\155\\64";
var result = str.replace(/\\(\d+)/g, function(a, b){ return String.fromCharCode(parseInt(b, 8));})

Die doppelten Backslashes im String sind nur drin, weil JavaScript das aus dem Script heraus direkt selbst als brauchbare Zeichen parst, d.h. du brauchst das nur wenn du externen Input hast wo die Backslashes als eigene Zeichen interpretiert werden.

Anschließend einfach die Zahlen nach dem Backslash mittels RegEx matchen, den Oktalcode parsen und aus dem CharacterCode dann ein Zeichen generieren. Das Ergebnis wird dann einfach in result oben gespeichert.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten