A String (karakterlánc, füzér). A változó értékét aposztófok közé zárva kell megadni. A stringek szöveges formában ábrázolt adatok tárolására használhatók. A leggyakoribb sztringműveletek közé tartozik a hossz vizsgálata, azok felépítése és összefűzése a + és += sztring operátorokkal, alfüzérek meglétének és helyének vizsgálata a indexOf() metódussal, illetve alfüzérek lekérdezése a substring() metódussal.
String létrehozása: a JavaScript különbséget tesz String objektumok és primitív sztring értékek között!
1 |
var valtozo = new String('Változó tartalma'); |
Rövid kitérő, mi is a probléma a primitív stringekkel…
1 2 3 4 |
var s1 = '2 + 2'; // létrehoz egy sztring primitívet var s2 = new String('2 + 2'); // létrehoz egy String objektumot console.log(eval(s1)); // a 4 számmal tér vissza console.log(eval(s2)); // a "2 + 2" sztringgel tér vissza |
Ezen okok miatt a kód hibás működését okozhatja, amikor String objektumra fut, miközben primitív sztringet vár, bár általában nem szükséges a fejlesztőknek ezzel törődni. Egy String objektum mindig átalakítható a primitív megfelelőjére a valueOf() metódussal.
console.log(eval(s2.valueOf())); // 4-et ad vissza
Karakter hozzáférés
Kétféle mód van egy sztringben az egyes karakterekhez való hozzáféréshez. Az egyik a charAt() metódus:
1 |
return 'macska'.charAt(1); // "a"-val tér vissza |
A másik mód tömbszerű objektumként kezeli a stringet, ahol az egyes karaktereknek számindexek felelnek meg:
1 |
return 'macska'[1]; // "a"-val tér vissza |
Stringek összehasonlítása
A JavaScript-ben a kisebb és nagyobb operátorok használhatók:
1 2 3 4 5 6 7 8 9 |
var a = 'a'; var b = 'b'; if (a < b) { // true console.log(a + ' kisebb, mint ' + b); } else if (a > b) { console.log(a + ' nagyobb, mint ' + b); } else { console.log(a + ' és ' + b + ' egyenlők.'); } |
Kérjünk be egy karaktersort (a felhasználó nevét), majd szedjük szét karakterekre.
1 2 3 4 5 6 7 |
var s = new String; s = prompt('Írd be a neved'); document.write('Szia ',s,'<br>'); // ….udvariasan köszönünk document.write('A neved ',s.length,' karakterből áll.<br>'); // string hossza for (i=0; i < s.length; ++i) { // string első karaktere a nulladik elem! document.write(s.charAt(i),'<br>'); } |
A beírt név visszafelé:
1 2 3 4 |
var s = new String; s = prompt('Írd be a neved'); for (i =s.length-1; i>=0 ; --i) { // string első karaktere a nulladik elem! document.write(s.charAt(i)); } |
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.
1 2 |
for (i = 32; i <= 255; ++ i) { document.write(i, '-->',String.fromCharCode(i),'<br>'); } |
További példák:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
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.<strong>toUpperCase()</strong>,'<br>'); // string kiírása kisbetűs alakban. Nem változtatja meg a változó tartalmát! document.write(s.<strong>toLowerCase()</strong>,'<br>'); // string részlet kivágása – első paraméter: kezdő pozíció; második: hossz document.write(s.<strong>substr</strong>(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.<strong>indexOf</strong>('tükör'),'<br>'); // keresés a stringben (utolsó előfordulás) – visszafelé keres document.write(s.<strong>lastIndexOf</strong>('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
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 29 30 31 32 33 34 35 36 37 |
<html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <script language="JavaScript"> uresMezoHiba = new Error("A beviteli mező üres!"); nincsSpaceHiba = new Error("A beírt név nem tartalmaz szóközt!"); function Udvozles() { try { if (document.forms[0].bekertnev.value == "") { throw uresMezoHiba; } if (!document.forms[0].bekertnev.value.includes(" ")) { throw nincsSpaceHiba; } else{ teljesnev = document.forms[0].bekertnev.value; //keresztnev = teljesnev.split(" "); //alert("Üdvözlöm " +keresztnev[1] +"!") var i = teljesnev.lastIndexOf(' ')+1; keresztnev=teljesnev.substr(i); alert("Üdvözlöm " +keresztnev +"!") } } catch (e) { alert(e.message); } } </script> </head> <body> <form onSubmit="Udvozles()"> Felhasználó teljes neve: <input type="text" name="bekertnev"> <input type="submit" name="submit" value="Küldés"> </form> </body> </html> |
Hányszor szerepel egy adott karakterlánc egy másikban?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
var szoveg = 'Ez a szöveg amiben keresünk valamit! Ez a szöveg az!', keresettszo = 'ami', db = 0, pos = szoveg.indexOf(keresettszo); while (pos > -1) { ++db; pos = szoveg.indexOf(keresettszo, ++pos); } document.write("A megadott szöveg:","<br>"); document.write("<i>",szoveg,"</i><br>"); if (db>0) { document.write("A keresett szó: (",keresettszo,") ennyiszer szerepel:",db); //console.log(db); // 2 } else { document.write("A keresett szó nem szerepel a szövegben!"); } |
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
let szin = "FFFFFF"; let R = parseInt(szin.substring(0, 2), 16); let G = parseInt(szin.substring(2, 4), 16); let B = parseInt(szin.substring(4, 6), 16); let R16 = R.toString(16); let G16 = G.toString(16); let B16 = B.toString(16); // Decimális! - tagonként document.write("R: ", R, "<br>"); document.write("G: ", G, "<br>"); document.write("B: ", B, "<br>"); // Hexadecimális - tagonként, stringek! document.write("R: ", R16, "<br>"); document.write("G: ", G16, "<br>"); document.write("B: ", B16, "<br>"); // simán össze lehet rakni újra! szin = R16 + G16 + B16; document.write("szin: ", szin, "<br>"); |
1 |