JavaScript: String

JavaScript Web

A String (karakterlánc, füzér). A változó értékét aposztófok vagy időzőjelek között kell megadni.

A stringek szöveges formában ábrázolt adatok tárolására használhatók. Használható a stringen belül is idézőjel vagy aposztróf, az a lényeg, hogy ne ugyanazt használjuk, mint a string megadásakor!

Van még lehetőségünk a template literal használatára (sablon szöveg). Ebben az esetben nyugodtan használhatunk a szövegben idézőjelet, aposztrófot. Alkalmas többsoros szöveg tárolására is. Használhatunk benne iterpolációt is változók értékének megjelenítésére.

Használhatunk escape karaktert is, ez a \ -jel.

A „Template Literal” a hivatalos elnevezés, amelyet az ECMAScript 2015 (ES6) specifikáció bevezetett. A fejlesztők között azonban a „template string” kifejezés is széles körben elterjedt és elfogadott szinonima. Mindkét kifejezés arra a speciális string-típusra vonatkozik, amelyet a hagyományos aposztrófok (‘) vagy idézőjelek („) helyett visszafelé dőlő aposztrófok (`) közé írunk. (altgr+7)

template literal jellemzői:

  • Lehetővé teszi a stringek több sorba történő írását.
  • Interpoláció: Lehetővé teszi, hogy JavaScript változókat és kifejezéseket ágyazzunk a stringbe a ${expression} szintaktika segítségével.

String létrehozása:

Leggyakoribb string függvények, length tulajdonság

JavaScriptben a stringek immutábilisak (változtathatatlanok). Ez azt jelenti, hogy az összes string metódus (pl. toUpperCase(), slice(), concat()) NEM a meglévő stringet módosítja, hanem új stringet hoz létre a megváltoztatott értékkel!

length: String hosszának meghatározása. (nem függvény, tulajdonság!)

charAt(): a megadott indexen található karaktert adja vissza. Az index számozása 0-val kezdődik. Ha az index a karakterlánc hosszán kívül esik (például negatív szám vagy túl nagy érték), akkor a charAt üres karakterláncot ad vissza.

charCodeAt(): a megadott indexen található karakter unicode (utf16) kódját adja vissza. Ha az index a karakterlánc hosszán kívül esik (például negatív szám vagy túl nagy érték), akkor a charCodeAt NaN értéket ad vissza.

at(): a megadott indexűkaraktert adja vissza. Gyakorlatilag ugyanaz, mintha [] zárójelbe írnánk. Azonban az at függvény támogatja a negatív indexeket is, amelyek a karakterlánc vagy tömb végétől számítják az elemeket.

slice(): a string egy részét (szeletét) lehet „kivágni” vele, és új stringbe beletenni. A slice elfogad negatív indexet is. A slice függvény két paramétert fogad el: a kezdő indexet és az opcionális befejező indexet. A slice a kezdő indextől kezdve (beleértve) a befejező indexig (kizárva) kivágja a string megadott részét.

substring(): Majdnem ugyanaz, mint a slice, csak nem fogad el negatív indexet. A kezdő indexet beleértve, de a befejező indexet kizárva adja vissza a karakterlánc részét. A substring nem támogatja a negatív indexeket, és ha a kezdő index nagyobb, mint a befejező index, akkor felcseréli őket.

substr(): A kezdő poziciót, és a szelet hosszát kell neki megadni. Elavult, használjuk helyette a slice()-t!

toUpperCase(): szöveg átalakítása nagybetűssé

toLowerCase(): szöveg átalakítása kisbetűssé

concat(): stringek sszefűzése. A concat() függvényt használhatjuk több karakterlánc (string) vagy tömb egyesítésére, új karakterlánc létrehozásához. Ez a függvény nem módosítja a meglévő karakterláncokat, hanem új karakterláncot hoz létre, amely tartalmazza az összes összeillesztett elemet.

trim(), trimStart(), trimEnd(): függvények a felesleges szóközöket (vagy más white space karaktereket) távolítják el a karakterlánc elejéről, végéről, vagy mindkét végéről.

padStart(), padEnd(): függvények a karakterláncokat a megadott hosszúságúra egészítik ki úgy, hogy hozzáadnak szóközöket vagy más kitöltő karaktereket a karakterlánc elejéhez vagy végéhez.

repeat(): egy karakterláncot többször egymás után megismétli, új karakterlánccá alakítva.

replace(): Lecseréli a stringben az első előfordulását a keresett mintának (stringnek vagy regex-nek).

ReplaceAll(): a megadott stringet kicseréli mindenhol egy másik stringben.

normalize(): Normalizálja a string Unicode formáját. Akkor hasznos, ha különböző módon kódolt ékezetes vagy speciális karaktereket akarunk egységesen kezelni (pl. keresés előtt).

localeCompare(): Összehasonlít két stringet, figyelembe véve a nyelvi beállításokat (pl. magyarban az abc szerinti sorrend, ahol az a és á külön van). Egy számot ad vissza: -1 (ha az első van előbb), 1 (ha a második van előbb), vagy 0 (ha azonosak).

split(): függvény segítségével egy stringet szét lehet bontani a megadott karakternél, és a kapott részeket egy tömbbe kerülnek.


Keresés

indexOf(): Meghatározza egy keresett string első előfordulásának indexét egy másik stringben. Ha nem található meg a kerett érték, akkor -1 értéket ad vissza.
lastIndexOf(): Meghatározza egy keresett string utolsó előfordulásának indexét egy másik stringben. Ha nem található meg a kerett érték, akkor -1 értéket ad vissza.

search(): egy karakterláncot keres adott reguláris kifejezés alapján, és visszaadja az első találat indexét. Ha a találat nem sikerül, -1 értéket ad vissza.

match(): egy reguláris kifejezésre alkalmazva az összes találatot visszaadja. Ha a globális flaget (g) megadjuk, a függvény az összes találatot egy tömbben adja vissza.
matchAll(): egy iterátor objektumot ad vissza, amely tartalmazza az összes találatot egy adott reguláris kifejezésre a karakterláncban.

includes(): ellenőrzi, hogy egy adott érték megtalálható-e egy tömbben vagy karakterláncban. Ez a függvény true-t ad vissza, ha az érték megtalálható, és false-t, ha nem.

startsWith(), endsWith(): segítségükkel ellenőrizhető, hogy egy karakterlánc egy másik karakterlánccal kezdődik-e vagy végződik-e. Mindkét függvény logikai értéket ad vissza: true-t, ha az ellenőrzött karakterlánc megfelel a keresett mintának, és false-t, ha nem.


Egyéb példák:

A beírt név visszafelé:

Az ASCII kódtábla karaktereinek megjelenítése. A felhasznált „fromCharCode” függvény a paraméterként kapott számhoz (0..255) tartozó ASCII karaktert adja vissza.

for (i = 32; i <= 255; ++ i) {
document.write(i, '-->',String.fromCharCode(i),'<br>'); }

További példák:

var s = new String('Árvíztűrő tükörfúrógép');

// string kiírása nagybetűs alakban. Nem változtatja meg a változó tartalmát! Tehát az s változó továbbra is kisbetűs szöveget tartalmaz!
document.write(s.toUpperCase(),'<br>');

// string kiírása kisbetűs alakban. Nem változtatja meg a változó tartalmát!
document.write(s.toLowerCase(),'<br>');

// string részlet kivágása – első paraméter: kezdő pozíció; második: hossz
document.write(s.substr(10,5),'<br>');
document.write(s.substr(15,4),'<br>');

// keresés a stringben (első előfordulás) . ha nincs, akkor -1 –et ad vissza! Érzékeny a kis és nagybetűkre!
document.write(s.indexOf('tükör'),'<br>');

// keresés a stringben (utolsó előfordulás) – visszafelé keres
document.write(s.lastIndexOf('r'),'<br>');

// szóköz utáni karakterek kiíratása
var i = s.lastIndexOf(' ')+1;
document.write(s.substr(i),'!') ;

// írjuk ki a szóköz előtti szót nagybetűs alakban
document.write(s.substr(0,i).toUpperCase(),'<br>');

Példa: Felhasználó üdvözlése keresztnévvel, hibakezeléssel

Hányszor szerepel egy adott karakterlánc egy másikban?

Feladat: alakíts át egy hexadecimális színkódot decimálisba! Ehhez felbontjuk tagokra – 2 karakterenként. Első kettő a piros, következő kettő a zöld, utolsó kettő a kék színért felel.