Kihagyás

Bővebben a stringekről

Stringek megadása

A stringeket leggyakrabban aposztrófok ('...') vagy idézőjelek ("...") között szoktuk megadni. A két megadási mód között lényegi különbség nincs.

Több soros szövegeket backtick karakterek (AltGr + 7) között adhatunk meg.

1
2
3
4
let dalszoveg = `Never gonna give you up
Never gonna let you down 
Never gonna run around
And desert you`

Stringek összefűzése

A stringek összefűzése a + (plusz) operátorral történik.

1
2
let szoveg = "Java" + "Script";
console.log(szoveg);

Kimenet

JavaScript

Stringek hossza

JavaScriptben egy string hosszát a length property-vel tudjuk lekérdezni.

1
2
let szoveg = "JavaScript";
console.log(szoveg.length);

Kimenet

10

Karakterek indexelése

A stringek karaktereit JavaScriptben is a más nyelvekből ismerős szögletes zárójel operátorral indexelhetjük: szoveg[index]. A karakterek indexelése itt is 0-tól kezdődik.

1
2
3
4
5
let szoveg = "tüttyölt ratyli";

console.log("A 0. indexű karakter: " + szoveg[0]);
console.log("A 4. indexű karakter: " + szoveg[4]);
console.log("Az utolsó karakter: " + szoveg[szoveg.length - 1]);

Kimenet

A 0. indexű karakter: t A 4. indexű karakter: y Az utolsó karakter: i

Fontos megjegyezni, hogy a Pythonban tanult negatív indexelés, illetve intervallumos indexelés JavaScriptben nem működik! Amennyiben alul- vagy túlindexeljük a stringet, undefined értéket kapunk.

1
2
3
4
let szoveg = "kenyér";

console.log(szoveg[800]);
console.log(szoveg[-1]);

Kimenet

undefined undefined

Immutable adattípus

A string adattípus JavaScriptben is immutable, tehát a szövegek kezdeti értéke nem változtatható meg.

1
2
3
4
let szoveg = "kecske";
szoveg[0] = "f";                // ennek JavaScriptben nincs hatása!

console.log(szoveg);

Kimenet

kecske

Stringkezelő függvények

JavaScriptben rengeteg beépített stringkezelő függvényt használhatunk. Tekintsük át ezek közül a kurzus szempontjából a legfontosabbakat!

  • s.toLowerCase(): csupa kisbetűssé alakítja az s stringet
  • s.toUpperCase(): csupa nagybetűssé alakítja az s stringet
  • s.startsWith(v): igazat ad vissza, ha az s string a v értékkel kezdődik
  • s.endsWith(v): igazat ad vissza, ha az s string a v értékre végződik
  • s.substr(start, length): visszaadja az s stringből egy részstringet, a start indexű karakterétől kezdve, length karakteren keresztül
  • s.indexOf(text): visszaadja a text szöveg legelső előfordulásának a kezdőindexét az s stringen belül (-1-et ad vissza, ha a keresett szöveg nem szerepel az s stringben)
  • s.replace(old, new): lecseréli az s stringben a legelső old részstringet a new szövegre
  • s.trim(): eltávolítja a helyközöket az s string elejéről és végéről
  • s.split(delim): feldarabolja az s stringet delim karakterek mentén (egy tömböt ad vissza)
  • ...

Példa: Stringkezelő függvények használata

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
let szoveg = "    A citromos fagyi a legjobb fagyi        ";

szoveg = szoveg.trim();     // helyközök eltávolítása a szöveg elejéről és végéről

console.log(szoveg.toLowerCase());      // kisbetűsítés
console.log(szoveg.toUpperCase());      // nagybetűsítés
console.log(szoveg.endsWith("fagyi"));  // a "fagyi" stringre végződik-e a szöveg
console.log(szoveg.substr(0, 8));       // az első 8 karakter
console.log(szoveg.replace("fagyi", "süti"));   // részstring lecserélése (csak az első előfordulást!)

if (szoveg.indexOf("fagyi") >= 0) {     // részstring előfordulásának vizsgálata
    console.log("Szerepel a szövegben fagyi!");
} else {
    console.log("A szövegben nem szerepel fagyi!");
}

const szavak = szoveg.split(" ");       // feldarabolás szóközök mentén
console.log(szavak);

Kimenet

a citromos fagyi a legjobb fagyi A CITROMOS FAGYI A LEGJOBB FAGYI true A citrom A citromos süti a legjobb fagyi Szerepel a szövegben fagyi! [ 'A', 'citromos', 'fagyi', 'a', 'legjobb', 'fagyi' ]

Kérdés

A replace() a kérdéses részstringnek csak a legelső előfordulását cseréli le a szövegben. Hogyan lehet elérni, hogy a fagyi szöveg összes előfordulását lecseréljük a süti szövegre?

Válasz
1
2
3
4
5
6
7
let szoveg = "A citromos fagyi a legjobb fagyi";

while (szoveg.indexOf("fagyi") >= 0) {          // amíg szerepel a szövegben a "fagyi" részstring...
    szoveg = szoveg.replace("fagyi", "süti");   // ...folyamatosan lecseréljük "süti"-re
}

console.log(szoveg);

Kimenet

A citromos süti a legjobb süti

Kiegészítés: template stringek

Ha egy szövegen belül be szeretnénk helyettesíteni bizonyos változók értékeit, akkor erre eddig a hagyományos string összefűzést használtuk.

1
2
let nev = "Józsi", eletkor = 20, foglalkozas = "programozó";
console.log(nev + " egy " + eletkor + " éves " + foglalkozas + ".");

Ha nagyon sok behelyettesítendő értékünk van, akkor egy idő után ez a módszer fárasztóvá válhat. Szerencsére az ECMAScript 6-os szabványban bevezették az úgynevezett template stringeket, amelyek segítségével a fenti kiíratás egyszerűbben megoldható.

A template stringeket backtick-ek (AltGr + 7) között adjuk meg. Használatuk során nem kell megszakítanunk a szövegünket a változók értékének behelyettesítésekor (mint az összefűzéses módszernél), a behelyettesíteni kívánt kifejezés értékét egyszerűen ${ }-be írjuk.

1
2
let nev = "Józsi", eletkor = 20, foglalkozas = "programozó";
console.log(`${nev} egy ${eletkor} éves ${foglalkozas}.`);  // ez talán így kényelmesebb :)

Utolsó frissítés: 2021-11-18 14:51:01