Konwersja kodu liczbowego na znak Unicode - fromCharCode
Jak przekształcić kod liczbowy na odpowiadający mu znak Unicode?
String.fromCharCode() String.fromCharCode(char0) String.fromCharCode(char0, char1...)
- Parametry:
Number
char0,Number
char1... - lista kodów kolejnych znaków tekstu w postaci 16-bitowych liczb naturalnych (0 - 65535)- Wartość:
String
- wartość tekstowa
Każdy pojedynczy znak tekstu jest zapisany wewnętrznie w postaci odpowiadającego mu kodu liczbowego. System przechowuje pełną mapę tych kodów, dzięki czemu wiadomo, że np. literze 'a' odpowiada kod 97, 'b' - 98, 'c' - 99 itd. W naszym programie możemy mieć potrzebę jawnie przekształcić taki kod liczbowy na odpowiadający mu znak. Możemy to zrobić właśnie za pomocą funkcji String.fromCharCode
.
Aby zapewnić, że przekazane argumenty nie przekraczają dozwolonego zakresu, funkcja może automatycznie wykonać dodatkowe obliczenia:
- Dla argumentów większych niż 65535 zostanie najpierw obliczona wartość:
char % 65536
(reszta z dzielenia przez 65536). Czyli gdy przekażemy wartość 65539, funkcja tak naprawdę weźmie pod uwagę liczbę 3. - Dla argumentów mniejszych od zera zostanie najpierw obliczona wartość:
char % 65536 + 65536
. Czyli gdy przekażemy wartość -3, funkcja tak naprawdę weźmie pod uwagę liczbę 65533.
Funkcja działa odwrotnie do String.prototype.charCodeAt.
Kody dowolnych znaków możesz sprawdzić za pomocą generatora Unicode.
Przykład String.fromCharCode
String.fromCharCode(97, 98, 99); // "abc" String.fromCharCode(65633); // "a" (65633 % 65536 = 97) String.fromCharCode(-65439); // "a" (-65439 % 65536 + 65536 = 97) String.fromCharCode(97.9); // "a" String.fromCharCode(" +97.9 "); // "a" String.fromCharCode(); // "" String.fromCharCode(undefined); // "" String.fromCharCode(null); // "" String.fromCharCode(false); // "" String.fromCharCode(0); // "" String.fromCharCode(NaN); // "" String.fromCharCode(Infinity); // "" String.fromCharCode(""); // "" String.fromCharCode("test"); // "" String.fromCharCode("97 test"); // ""