Przetwarzanie łańcuchów w JavaScript

Mirosław Zelent | 08-01-2018

Łańcuchami nazywamy w programowaniu napisy (gdyż podobnie jak łańcuchy składają się z ogniw, tak napisy złożone są ze znaków). W praktyce łańcuch możemy zatem zwizualizować sobie jako tablicę (patrz poprzedni artykuł), która indeksowana jest standardowo od zera.

var napis = "Anna";
Anna
indeks = 0indeks = 1indeks = 2indeks = 3

Poznajmy podstawowe (w kontekście egzaminu) atrybuty łańcuchów oraz metody ich przetwarzania.

length – atrybut pozwalający odczytać długość łańcucha:

 var napis = "Anna";
alert(napis.length); // długość tego łańcucha będzie równa 4

charAt(x) – kiedy chcemy uzyskać dostęp do pojedynczego znaku łańcucha (o indeksie równym x), to nie posługujmy się standardowym zapisem z użyciem nawiasów kwadratowych (nie jest on poprawnie zaimplementowany we wszystkich przeglądarkach) – bezpieczniej jest użyć metody charAt(x).

 var napis = "Anna";
alert(napis.charAt(3)); // indeks równy 3 to litera "a"

charCodeAt(x) - metoda zwracająca kod ASCII znaku na pozycji x. Kod ASCII to numer znaku w tzw. tablicy ASCII

 var napis = "Anna";
alert(napis.charCodeAt(3)); // Kod ASCII litery "a" to 97

search(fraza) - metoda, która wyszukuje pozycję (indeks) w łańcuchu podanej frazy. W przypadku wielokrotnego występowania frazy można użyć metod: indexOf(fraza) oraz lastIndexOf(fraza), które zwrócą kolejno: indeks pierwszego oraz indeks ostatniego wystąpienia podanej frazy w łańcuchu. Uwaga: jeśli frazy nie uda się odnaleźć w tekście, to metody zwrócą wartość -1 (jako umowny sygnał, że tak się stało).

 var napis = "Anna ma kota";
var pozycja = napis.search("kot");

alert(pozycja); // pozycja frazy "kot" to indeks 8

slice(start, stop) – metoda, która wyjmuje z napisu jego fragment i wkłada do nowego łańcucha. Wyjmujemy od indeksu start do indeks stop (już bez tego znaku). Słówko "slice" oznacza dosłownie "kroić" – łatwo zapamiętać :)

 var napis1 = "Anna ma kota";
var napis2 = napis1.slice(8, 11);

alert(napis2); // wyjęto napis2: "kot"

substr(start, ile_znakow) oraz substring(start, ile) – metody, które również wyjmują z napisu jego fragment i wkładają do nowego łańcucha. Pierwszy argument to indeks określający początek wyjmowania, zaś metody sobą różnią się drugim argumentem. W metodzie substr() podajemy ile znaków wyjmujemy, zaś w przypadku substring() drugi argument to indeks kończący wyjmowanie – ostatnim wyjętym znakiem będzie ten, który znajdował się w szufladce o indeksie o 1 mniejszym od podanego – podobnie jak to miało miejsce w metodzie slice().

 var napis1 = "Anna ma kota";

var napis2 = napis1.substring(8, 11);
var napis3 = napis1.substr(8, 3);

alert(napis2); // wyjęto napis2: "kot"
alert(napis3); // wyjęto napis3: "kot"

replace(fraza, inna_fraza) - metoda, która podmienia w łańcuchu podaną frazę na inną

 var napis1 = "Anna ma kota";
var napis2 = napis1.replace("kota", "psa");

alert(napis2); // napis2 to: "Anna ma psa"

toLowerCase(x) oraz toUpperCase(x) - zamiana liter łańcucha x na kolejno: małe oraz WIELKIE litery

 var napis = "Anna ma kota";

alert(napis.toLowerCase()); // napis to: "anna ma kota"
alert(napis.toUpperCase()); // napis to: "ANNA MA KOTA"