Kihagyás

Szövegek

Bővebben a stringekről

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 songLyrics = `Never gonna give you up
Never gonna let you down 
Never gonna run around
And desert you`

Escape szekvenciák

A stringekben speciális karaktereket escape szekvenciákkal adhatunk meg:

1
2
3
4
5
6
7
8
9
let text = "First line\nSecond line\tWith tab";
let quote = "He said: \"Hello world!\"";
let path = "C:\\Users\\student\\Documents";
let apostrophe = 'It\'s a beautiful day';

console.log(text);
console.log(quote);
console.log(path);
console.log(apostrophe);

Kimenet

First line

Second line With tab

He said: "Hello world!"

C:\Users\student\Documents

It's a beautiful day

Gyakori escape szekvenciák:

  • \n - új sor
  • \t - tabulátor
  • \" - idézőjel
  • \' - aposztróf
  • \\ - backslash

Alapműveletek

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

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

Kimenet

JavaScript

Szövegek hossza

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

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

Kimenet

10

Karakterek indexelése

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

1
2
3
4
5
let text = "Hello World";

console.log("The character at index 0: " + text[0]);
console.log("The character at index 4: " + text[4]);
console.log("The last character: " + text[text.length - 1]);

Kimenet

The character at index 0: H

The character at index 4: o

The last character: d

Fontos megjegyezni, hogy a Pythonban létező 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 text = "bread";

console.log(text[800]);
console.log(text[-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 text = "goat";
text[0] = "b";              // does nothing!

console.log(text);

Kimenet

goat

Stringek összehasonlítása

A stringek összehasonlítása lexikografikus (szótár) sorrendben történik:

1
2
3
4
5
6
7
8
console.log("apple" < "banana");    // true
console.log("Apple" < "apple");     // true (uppercase letters come first)
console.log("10" < "2");           // true (in string comparison!)

// Equality testing
console.log("hello" === "hello");   // true
console.log("Hello" === "hello");   // false (case sensitive)
console.log("Hello" == "hello");    // false (case sensitive)

Kimenet

true

true

true

true

false

false

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!

Alapvető metódusok

  • s.toLowerCase(): csupa kisbetűssé alakítja az s stringet
  • s.toUpperCase(): csupa nagybetűssé alakítja az s stringet
  • s.trim(): eltávolítja a helyközöket az s string elejéről és végéről

Keresési és vizsgálati metódusok

  • 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.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.includes(text): igazat ad vissza, ha az s string tartalmazza a text szöveget (modern alternatíva az indexOf-hoz)

Kivágási és részstring metódusok

  • s.substring(start, end): visszaadja az s stringből egy részstringet a start indextől az end indexig (nem beleértve)
  • s.slice(start, end): hasonló a substring-hez, de támogatja a negatív indexeket is

Figyelem

A substr() metódus elavult (deprecated), helyette használjuk a substring() vagy slice() metódusokat!

Csere és átalakítási metódusok

  • s.replace(old, new): lecseréli az s stringben a legelső old részstringet a new szövegre
  • s.replaceAll(old, new): lecseréli az s stringben az összes old részstringet a new szövegre
  • s.split(delim): feldarabolja az s stringet delim karakterek mentén (egy tömböt ad vissza)

Modern metódusok

  • s.repeat(n): az s stringet n-szer megismétli
  • s.padStart(length, padString): kiegészíti az s stringet balról a megadott hosszúságig
  • s.padEnd(length, padString): kiegészíti az s stringet jobbról a megadott hosszúságig

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
19
20
21
22
23
24
25
26
27
28
let text = "    The lemon ice cream is the best ice cream        ";

text = text.trim();     // remove whitespace from beginning and end of text

console.log(text.toLowerCase());        // convert to lowercase
console.log(text.toUpperCase());        // convert to uppercase
console.log(text.endsWith("cream"));    // does the text end with "cream"
console.log(text.substring(0, 8));      // first 8 characters
console.log(text.slice(0, 8));          // same as substring in this case
console.log(text.replace("ice cream", "cake")); // replace substring (only first occurrence!)

// Modern method: using includes()
if (text.includes("ice cream")) {       
    console.log("The text contains ice cream!");
} else {
    console.log("The text does not contain ice cream!");
}

// Replace all occurrences (modern method)
console.log(text.replaceAll("ice cream", "cake"));

const words = text.split(" ");      // split by spaces
console.log(words);

// Examples of modern methods
console.log("Hi".repeat(3));                    // "HiHiHi"
console.log("5".padStart(3, "0"));              // "005"
console.log("Price".padEnd(10, "."));           // "Price....."

Kimenet

the lemon ice cream is the best ice cream

THE LEMON ICE CREAM IS THE BEST ICE CREAM

true

The lemo

The lemo

The lemon cake is the best ice cream

The text contains ice cream!

The lemon cake is the best cake

[

'The', 'lemon',

'ice', 'cream',

'is', 'the',

'best', 'ice',

'cream'

]

HiHiHi

005

Price.....

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 name = "John", age = 20, occupation = "programmer";
console.log(name + " is a " + age + " years old " + occupation + ".");

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 (ellentétben 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 name = "John", age = 20, occupation = "programmer";
console.log(`${name} is a ${age} years old ${occupation}.`);

Előnyei:

  • Jobb olvashatóság, nem kell megszakítani a szöveget
  • Automatikusan támogatja az új sorokat (ahogy ezt láttuk fentebb is)
  • Bármilyen JavaScript kifejezést használhatunk a template stringekben
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
let firstName = "John";
let lastName = "Doe";
let price = 100;
let taxRate = 0.2;

let message = `
Customer: ${firstName} ${lastName}
Price: $${price}
Tax: $${price * taxRate}
Total: $${price * (1 + taxRate)}
Calculation: ${2 + 3} equals five
`;

console.log(message);

Kimenet

Customer: John Doe

Price: $100

Tax: $20

Total: $120

Calculation: 5 equals five