Przejdź do treści

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");  // ""

Komentarze

Zobacz więcej komentarzy

Facebook