Tento díl bude o tom jak správně pracovat s textovými řetězci
Text je asi to nejzákladnější co má každá webová stránka, proto se Vám určitě bude někdy hodit provádět některé základní úpravy.Textový řetězec není nic jiného než pole a s jako takovým s ním můžeme pracovat. Chceme-li například zjistit délku řetězce můžeme použít vlastnost length (o polích bylo psáno v předchozích dílech).
Ekvivalence
Pokud budeme porovnávat znaky ne vždy to může být tak jak chceme. var a = "a";
var b = "b";
if (a < b) // true
document.write(a + " je menší než " + b);
else if (a > b)
document.write(a + " je větší než " + b);
else
document.write(a + " a " + b + " jsou ekvivalentní.");
Pokud budete testovat tento kód narazíte možná na zajímavé zjištění, například že se dají porovnávat znaky.
Příklad:
var a="a"; var b="b"; // a je menší než b
var a="a"; var b="A"; // a je větší než A
var a="a"; var b=61; // a a 61 jsou ekvivalentní.
var a="g"; var b="č"; // g je menší než č
var a="abcda"; var b="abcde"; // abcda je menší než abcde
První řádek by se mohl zdát logický, jde to přece podle abecedy.
Druhý řádek už je asi trochu divný, vždyť jde o stejná písmena a "A" je "vyšší písmeno", tak proč? Jde o to, že všechny znaky se převádějí podle ASCII (Unicode) tabulky na hodnoty a písmeno "a" odpovídá číslu 61, písmeno "b" číslu 62. jednoduše se poté provádějí porovnání těchto čísel.
Třetí řádek ukazuje, že porovnávání probíhá po převodu na číslo a tedy písmeno "a" v ASCII (Unicode) tabulce 61 je rovno číslu 61
Čtvrtý řádek ukazuje, že se toto porovnávání nedá použít pro českou abecedu.
Poslední, pátý řádek ukazuje že se toto porovnání dá někdy použít nejen na znak ale také řetězce znaků.
Vytvoření textu
Jakkoliv se to může zdát tato kapitola hloupá, tak existuje několik způsobů ale taky častých chyb.Textový řetězec vytvoříme:
var retezec="Textový řetězec";
var retezec= String("Textový řetězec");
var retezec= new String("Textový řetězec"); //objekt typu String
var neretezec=Textový řetězec; //Chyba: text musí být uvozen apostrofy nebo uvozovkami
Řetězec můžeme vytvořit také pomocí ASCII (Unicode) tabulky pomocí funkce fromCharCode():
var retezec=String.fromCharCode(65,66,67) // ABC
Funkce může obsahovat N argumentů, kde čísla znamenají jejich hodnotu v Unicode tabulce.
Funkce pro práci s textem
charAt()Vrací znak podle určeného indexu.
var a="Texty"
a.charAt(0); //První znak: T
a.charAt(a.length-1); //Poslední znak: y
charCodeAt()
Vrací číslo znaku v Unicode tabulce podle určeného indexu.
" ".charCodeAt(0); //Mezera je také znak, má v tabulce číslo: 32
concat()
Vrací spojení N řetězců
var a="Dnes ";
var b="je ";
c=a.concat(b,"krásně");
document.write(c); // Dnes je krásně
indexOf()
Vrací první nalezený index hledaného řetězce, Při nenalezení vrací -1. Metoda je citlivá na velikost písmen.
a="mama mele maso";
a.indexOf("m"); // 0
a.indexOf("m", 0); // 0
a.indexOf("m",1); // 2
a.indexOf("ma",3); // 10
a.indexOf("tata"); // -1
"M".indexOf("m"); // -1
lastIndexOf()
Vrací první nalezený index hledaného řetězce, Při nenalezení vrací -1. Metoda je citlivá na velikost písmen.
a="mama mele maso";
c=a.lastIndexOf("m"); // 10
c=a.lastIndexOf("m", 0); // 0
c=a.lastIndexOf("m",2); // 2
c=a.lastIndexOf("ma",10); // 10
c=a.lastIndexOf("tata"); // -1
match()
Vrací část řetězce vybranou podle regulárního výrazu
a="Ukázkový text";
a.match(".$"); // "t"
a.match(".*"); // "Ukázkový text"
a.match(". ."); // "ý t"
replace()
Nahradí text vyhledaný regulárním výrazem nebo zadanám řetězcem
var a="Nějaký delší ukázkový text ze kterého se bude vybírat";
re = new RegExp(".* ");
a.replace(re,"X"); // "Xvybírat"
search()
Vrací index index hledaného řetězce podle regulárního výrazu. Při nenalezení vrací -1
a="Ukázkový text";
a.search("zk"); // 3
a.search("ká"); // 1
a.search("X"); // -1
slice()
Vrací text vybraný indexy
var a="Nějaký delší ukázkový text ze kterého se bude vybírat";
a.slice(13,26); // ukázkový text
split()
Vrátí pole, které vznikne rozdělím řetězce podle argumentu
var a="Nějaký delší ukázkový text ze kterého se bude vybírat";
a.split(" "); // [Nějaký,delší,ukázkový,text,ze,kterého,se,bude,vybírat] (jde o pole)
a.split(" ")[1]; // "delší"
substr()
Vrací řetězec od start indexu určitého množství znaků. Bez určení vrací celý řetězec
var a="Ukázkový text";
a.substr(0); // "Ukázkový text"
a.substr(0,1); // "U"
a.substr(9,4); // "text"
substring()
Vrací část řetězce ohraničeného zadanými indexy
var a="Ukázkový text";
a.substring(4,7); // "kov"
toLowerCase()
Vrátí upravený řetězec, kde všechna písmena jsou zmenšena.
var a="Ukázkový text";
a.toLowerCase(); // "ukázkový text"
toSource()
Viz kapitola o polích.
toString()
Vrací řetězec reprezentující specifikovaný objekt
var a= new String("Ukázkový text");
a.toString(); // "Ukázkový text"
toUpperCase()
Vrátí upravený řetězec, kde všechna písmena jsou zvětšena.
var a="Ukázkový text";
a.toUpperCase(); // "UKÁZKOVÝ TEXT"
valueOf()
Viz kapitola o datumu a čase (13.díl).
Poznámka: Unicode tabulka rozšiřuje ACSII tabulku o znaky jednotlivých národních abeced (včetně české), matematické znaky apod. více o Unicode se dočtete na www.unicode.org nebo ve wikipedii na http://cs.wikipedia.org/wiki/Unicode
Autor: Martin