String

A String konstruktorral létrehozhatunk karakterláncokat (szövegek szinte mindenhol jelenlévő reprezentációja)

Szintaxis

A sztringliterálok a következő formájúak:

'sztring szöveg'
"sztring szöveg"
"中文 español Deutsch English देवनागरी العربية português বাংলা русский 日本語 norsk bokmål ਪੰਜਾਬੀ 한국어 தமிழ் עברית"

Sztringeket létrehozhatunk a String globális objektummal közvetlenül:

String(valami)

Paraméterek

valami
Bármi, ami sztringgé alakítható.

Sablon literálok

Az ECMAScript 2015-tel kezdődően, a sztringliterálok ún. Template literal-ok is lehetnek:

`hello világ`
`hello!
 world!`
`hello ${who}`
tag `<a>${who}</a>`

Itt a ${who} helyére a megfelelő érték fog behelyettsítődni.

Escape jelölés

Egyes karakterek összezavarhatnák a JavaScript értelmezőt. Például egy " karakterről hogyan tufná megállapítani, hogy a karakterlánc végét jelöli, vagy annak része? Erre találták ki az escape jelölést, aminek segítségével jelölhetjük, hogy egy karakternek nincs speciális szerepe, nem kell programkódként értelmezni. Lényegében az történik, hogy a feldolgozott karakterláncban az escape karakter (például a \") helyére az annak megfelelő kimenet (") kerül.

Kód Kimenet
\XXX oktális Latin-1 karakter.
\' egyszeres idézőjel
\" idézőjel
\\ backslash
\n új sor (soremelés)
\r kocsi-vissza
\v függőleges tabulátor
\t tabulátor
\b backspace
\f lapdobás
\uXXXX unicode kódpont
\u{X} ... \u{XXXXXX} unicode kódpont This is an experimental API that should not be used in production code.
\xXX hexadecimális Latin-1 karakter

Más nyelvekkel ellentétben a JavaScript nem különbözteti meg az egyszeres, illetve a kettős idézőjelekkel hivatkozott sztringeket; ezért a fenti escape szekvenciák mind az egyszeres, mind a kettős idézőjelekkel létrehozott sztringek esetén működnek.

Hosszú sztring literálok

Időnként a kódban szerepelhetnek nagyon hosszú sztringek. Vég nélkül folytatódó, illetve a szerkesztőprogram kénye-kedve szerint megtört sorok helyett lehetséges a sztringek több sorba tördelése a tartalom meghagyásával. Erre két mód van.

Használhatjuk a + operátort több füzér összefűzéséhez, így:

let longString = "Ez egy elég hosszú String ahhoz " +
                 "hogy több sorba rendezzem, mert " +
                 "máskülönben a kód nem olvasható.";

Vagy használható a backslash karakter ("\") az összes sor végén, jelölve, hogy a sztring a következő sorban folytatódik. Győződjünk meg róla, hogy nincs szóköz vagy más karakter a backslash után (soremelés kivételével), akár bekezdésként, különben nem fog működni. Ennek formája a kövekező:

let longString = "This is a very long string which needs \
to wrap across multiple lines because \
otherwise my code is unreadable.";

Mindkét forma a példában azonos sztringek létrehozását eredményezi.

Leírás

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 (en-US) 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() (en-US) metódussal, illetve alfüzérek lekérdezése a substring() (en-US) metódussal.

Karakter hozzáférés

Kétféle mód van egy sztringben az egyes karakterekhez vakó hozzáféréshez. Az egyik a charAt() (en-US) metódus:

return 'macska'.charAt(1); // "a"-val tér vissza

A másik mód (bevezetve az ECMAScript 5-ben) tömbszerű objektumként kezeli a sztringet, ahol az egyes karaktereknem számindexek felelnek meg:

return 'macska'[1]; // "a"-val tér vissza

Törölni vagy megváltoztatni e tulajdonságokat karakter hozzáféréssel nem lehet a szögletes zárójeles jelölés esetén. A szóban forgó tulajdonságok nem írhatók és nem is konfigurálhatók. (Lásd a Object.defineProperty() (en-US) cikket további információért.)

Sztringek összehasonlítása

C fejlesztőknek ismerős lehet a strcmp() függvény sztringek összehasonlításához. A JavaScript-ben a kisebb és nagyobb operátorok használhatók:

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.');
}

Hasonlót eredményez a localeCompare() (en-US) metódus, amelyet a String példányok örökölnek.

Sztring primitívek és String objektumok megkülönböztetése

Jegyezzük meg, hogy a JavaScript különbséget tesz String objektumok és primitív sztring értékek között. (Ugyanez igaz Boolean és Number (en-US) objektumokra.)

Sztringliterálok (egyszeri vagy kettős idézőjellel jelölve) és a String hívásából visszatérő, nem konstruktor kontextusból (azaz, nem a new (en-US) kulcsszó használatával) kapott sztringek primitív sztringek. A JavaScript automatikusan String objektumokká alakítja a primitíveket, hogy eképpen a String objektum metódusai primitív sztringeken is használhatók legyenek. Amikor primitív sztringen hívódik metódus vagy tulajdonság lekérdezés, a JavaScript automatikusan String objektummá alakítja a sztringet és így hívja meg a metódust, illetve a lekérdezést.

var s_prim = 'foo';
var s_obj = new String(s_prim);

console.log(typeof s_prim); // Konzol kimenet: "string"
console.log(typeof s_obj);  // Konzol kimenet: "object"

Sztring primitívek és String objektumok az eval() (en-US) használatakor is különböző eredményt adnak. Az eval számára átadott primitívek forráskódként vannak kezelve, míg a String objektumok, mint bármely más átadott objektum esetén, az objektum visszaadását eredményezik. Például:

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 a kód String objektumot kap, 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() (en-US) metódussal.

console.log(eval(s2.valueOf())); // 4-et ad vissza
Megjegyzés: Egy másik JavaScript-ben lehetséges megközelítésére a sztringeknek, lásd a StringView — a C-like representation of strings based on typed arrays cikket.

Tulajdonságok

String.prototype (en-US)
Tulajdonságok hozzáadását engedélyezi egy String objektumhoz.

Metódusok

String.fromCharCode() (en-US)
Unicode értékek meghatározott sorozatával megadott sztringgel tér vissza.
String.fromCodePoint() (en-US)
Kódpontok meghatározott sorozatával megadott sztringgel tér vissza.
String.raw() (en-US) This is an experimental API that should not be used in production code.
Nyers sablon sztring szerint létrehozott sztringgel tér vissza.

String generikus metódusok

A String generikusok nem szabványosak, elavultak és a közeljövőben törlésre kerülnek.

String példánymetódusok a JavaScript 1.6 óta elérhetők Firefox-ban (nem része az ECMAScript szabványnak) a String objektumon bármely objektumon String metódusok alkalmazására:

var num = 15;
console.log(String.replace(num, "5", "2"));

A String generikusokról való áttéréshez lásd a Warning: String.x is deprecated; use String.prototype.x instead cikket.

Tömbök generikusai (Generics) a tömb (Array) metódusokra is elérhetők.

String példányok

Tulajdonságok

{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/prototype', 'Tulajdonságok')}}

Metódusok

HTML-hez nem kapcsolódó metódusok

{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/prototype', 'Methods_unrelated_to_HTML')}}

HTML wrapper methods

Példák

String konverzió

A String használható egy biztonságosabb toString() (en-US) alternatívaként, mivel null, undefined, és symbol objektumokra is használható. Például:

var outputStrings = [];
for (var i = 0, n = inputValues.length; i < n; ++i) {
  outputStrings.push(String(inputValues[i]));
}

Specifikációk

Specificáció Státusz Megjegyzés
ECMAScript (ECMA-262)
The definition of 'String' in that specification.
Living Standard
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'String' in that specification.
Standard
ECMAScript 5.1 (ECMA-262)
The definition of 'String' in that specification.
Standard
ECMAScript 1st Edition (ECMA-262) Standard Kezdeti definíció.

Böngésző kompatibilitás

BCD tables only load in the browser

Lásd még