Przejdź do treści

Obsługa tekstu w JavaScript - String

Jak JavaScript radzi sobie z obsługą tekstu?

Konwertowanie wartości na tekst - String

Jak skonwertować dowolną wartość na prosty tekst?

String()
String(value)
Parametry:
value - wartość do konwersji
Wartość:
skonwertowana prosta wartość tekstowa (nie obiekt)

Konwertuje dowolną wartość na tekst. W przypadku braku argumentów wywołania zwraca pusty tekst.

Inaczej niż konstrukcja new String(...), nigdy nie tworzy nowego obiektu, a jedynie prostą wartość tekstową.

Przykład String

String();          // ""
String(undefined); // "undefined"
String(null);      // "null"
String(true);      // "true"
String(false);     // "false"
String(0);         // "0"
String(-1.2);      // "-1.2"
String(NaN);       // "NaN"
String(Infinity);  // "Infinity"
String("test");    // "test"

Tworzenie obiektu tekstowego - new String

Jak przekształcić dowolną wartość na obiekt tekstowy?

new String

new String()
new String(value)
Parametry:
value - wartość na podstawie której zostanie utworzony obiekt
Wartość:
String - nowa instancja obiektu tekstowego

Inaczej niż funkcja String, zawsze tworzy nową instancję obiektu tekstowego, a nie tylko prostą wartość tekstową.

Przykład new String

new String();          // new String()
new String(undefined); // new String("undefined")
new String(null);      // new String("null")
new String(true);      // new String("true")
new String(false);     // new String("false")
new String(0);         // new String("0")
new String(-1.2);      // new String("-1.2")
new String(NaN);       // new String("NaN")
new String(Infinity);  // new String("Infinity")
new String("test");    // new String("test")

length

O.length
Parametry:
String O - tekst
Wartość:
Number - długość tekstu

Zawiera wartość naturalną wskazującą, ile znaków znajduje się w tekście. Nie można jej zmieniać ani nie jest ona dostępna w pętli for-in.

Przykład

var str = "abc";
str.length; // 3
str.length = 1;
str.length; // 3
str;        // "abc"

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