Přeskočit na obsah

JavaScript/Kenjiro995/Textové proměnné

Z Wikiverzity

Online editor

[editovat]

Není nutné cokoliv instalovat protože existují online editory.

  • https://replit.com/ - osvědčil se mi při ukládání vytvořených programů, při vytváření nové relace si lze vybrat z mnoha programovacích jazyků
  • https://jsfiddle.net/ - ideální pro počáteční experimentování (použít pro tuto hodinu)
    • okno HTML - použití scriptu v html
    • okno CSC - pro kaskádové styly
    • okno JavaScript + No-libray (pure JS) - pro psaní čistě v JavaScriptu

Sčítání (slepování) textu

[editovat]

Operátor plus +, čísla sice sčítá, ale řetězce slepuje dohromady.

var a, b;
a = "Dnes prší";
b = "proto si vezmu deštník.";
document.write(a + b);
document.write("<br>");
document.write(a + ", " + b);

Výstup:

Dnes pršíproto si vezmu deštník.
Dnes prší, proto si vezmu deštník.

V příkazu document.write() lze také oddělovat čárkou, což funguje podobně jako slepování pomocí +:

var a, b, veta;
a = "Dnes prší";
b = "proto si vezmu deštník.";

document.write(a,", ",b);

Výstup:

Dnes prší, proto si vezmu deštník.


Také je možné si to v proměnné připravit jako vzorec a následně výsledek vypsat:

var a, b, veta;
a = "Dnes prší";
b = "proto si vezmu deštník.";

veta = a + ", " + b;
document.write(veta);

Výstup:

Dnes prší, proto si vezmu deštník.


Sčítání (slepování) textu přírůstkem

[editovat]
v = v + "text";

Se dá zjednodušit:

v += "text";


Příklad užití:

var a = "Ahoj",m= " ", o = "?", v="";
v += a;
v += m + "jak";
v += m + "se";
v += m + "máš";
v += o;
document.write(v);

Výsledek:

Ahoj jak se máš?

Přístup k textovému řetězci přes index

[editovat]

Ke každému textovému řetězci lze přistupovat podobně jako s polem přes index. S proměnou typu pole je tak možné vypsat konkrétní položku. V případě testového řetězce je položkou každý znak. První znak se čísluje od nuly.

var a = "Ahoj";
//       0123
document.write(a[0]); // prvním znakem je A
document.write("<br>");
document.write(a[3]); // posledním znakem je j

Výstup:

A
j


To samé jako předchozí příklad, ale s využitím příkazu alert, výpis do infoboxu:

var a = "Ahoj";
//       0123
alert(a[0] + "\n" + a[3]);

Výstup:

A
j

Uvozovky uvnitř textu

[editovat]

Protože se řetězec uvozuje do uvozovek, tak další uvozovky uvnitř textu způsobí chybu. Někdy je ale zapotřebí do textu uvozovky vkládat a proto existují metody jak předejít chybě: 1) Používají se dva druhy uvozovek, "dvojité uvozovky" a 'jednoduché uvozovky'. Textový řetězec se ohraničí jedním druhem a vnitřní se ohraničí druhým druhem. 2) Pomocí lomítka je možné označit uvozovky, které jsou součástí textu.

var text = 'Jan Werich řekl: "Jedna ženská vidí dál, než muž s dalekohledem."';    //kombinace jednoduchých a dvojitých uvozovek
var text = "Jan Werich řekl: \"Jedna ženská vidí dál, než muž s dalekohledem.\"";  //varianta s lomitkem \"

Funkce pro práci s textem

[editovat]

Vlastnost length

[editovat]

Jedinou vlastností objektu string je jeho délka -- length. Vrací počet znaků v řetězci. Prázdný řetězec má délku nula.

var text = "kocourek"; 
document.write(text.length); // má 8 znaků

nebo:

document.write("kocourek".length); // má 8 znaků

Výstup:

8

Funkce pro změnu velikosti písma

[editovat]
  • toUpperCase() ... převádí všechna písmena řetězce na velká
  • toLowerCase() ... převádí všechna písmena na malá
var promenna = "text".toUpperCase();
document.write(promenna); // vypíše TEXT

Výstup:

TEXT


var promenna = "TEXT".toLowerCase();
document.write(promenna); // vypíše text

Výstup:

text

split() Funkce pro rozsekání řetězce podle oddělovače

[editovat]

Rozdělí řetězec na jednotlivé řetězce a vloží je jako záznamy do pole. Jednotlivé záznamy jsou ve výstupu odděleny čárkou.

var retezec = "a.b.c.d.e.f.g.h.i.j";
pole = retezec.split(".");  // odělovačem (separátorem) je tečka "."
document.write(pole.toString());

Výstup:

a,b,c,d,e,f,g,h,i,j

Rozdělení věty na slova:

var retezec = "Jednotlivé záznamy jsou ve výstupu odděleny čárkou.";
pole = retezec.split(" ");  // odělovačem (separátorem) je mezera " "
document.write(pole.toString());

Výstup:

Jednotlivé,záznamy,jsou,ve,výstupu,odděleny,čárkou.


Výpis položky podle indexu pole:

var retezec = "Jednotlivé záznamy jsou ve výstupu odděleny čárkou.";
//                  0        1      2   3    4        5       6
pole = retezec.split(" ");  // odělovačem (separátorem) je mezera " "
document.write(pole[0]); // 0 Jednotlivé
document.write("<br>");
document.write(pole[3]); // 3 ve
document.write("<br>");
document.write(pole[6]); // 6 čárkou.

Výstup:

Jednotlivé
ve
čárkou.

match() Funkce vyhledává text podle regulárního výrazu

[editovat]
var a = "Ukázkový text";
document.write(a.match(".$")); // "t"
document.write("<br>");
document.write(a.match(".*")); // "Ukázkový text"
document.write("<br>");
document.write(a.match(". .")); // "ý t"

Výstup:

t
Ukázkový text
ý t

Značky regulárních výrazů:

  • . Tečka zastupuje jeden libovolný znak.
  • ^ Počátek řetězce
  • $ Konec řetězce
  • ? Minimálně 0krát (maximálně neomezeno)
  • + minimálně 1krát (maximálně neomezeno)
  • {n} právě n-krát
  • {m,n} minimálně m-krát, maximálně n-krát
  • {m,} minimálně m-krát (maximálně neomezeno)
  • [] seznam povolených znaků
  • [ab] pouze "a" nebo "b"
  • [^ab] cokoliv kromě "a" nebo "b"
  • \d číslice 0-9
  • \D jakýkoliv znak kromě číslic 0-9
  • \w znaky (a-z, A-Z, 0-9 a podtržítko)
  • \W jakýkoliv znak kromě (a-z, A-Z, 0-9 a podtržítko)
  • \s bílé znaky (mezera, tabulátor, zanky pro zalomení řádku)
  • \S jakýkoliv znak kromě býlích znaků
  • | znamená: nebo OR, vybírá jedno nebo druhé, A|B vybírá A nebo B
  • \b na začátku nebo konci slova
  • \B kdekoliv kromě začátku a konci slova
  • () subřetězec
  • (?: ) uzávorkování netvořící zpětnou referenci
  • (?# ) text se znakem # je ignorován
  • (?= ) kladné tvrzení o následujícím
  • (?! ) záporné tvrzení o následujícím
  • (?<= ) kladné tvrzení o předcházejícím
  • (?<! ) záporné tvrzení o předcházejícím
  • i nerozlišování malých/velkých písmen
  • s odpovídá znaku \n (nový řádek)
  • m odpovídá začátku a konci každého řádku
  • x bíle znaky a komentáře (znaky vpravo od #) jsou ignorovány
  • g hledány všechny části řetězce, které odpovídají hledanému výrazu (vrací pole/seznam)


Script který vyhledá všechny e-mailové adresy v řetězci a vrátí je jako pole(seznam), jednotlivé položky odděleny čárkou:

var a = "Ukázkový text kenjiro@javascript.cz 781-256 kenjiro@kotlcoch.ger";
var vzor = /[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-z]{2,4}/g
var vysledek = a.match(vzor);
document.write(vysledek);

Výstup:

kenjiro@javascript.cz,kenjiro@kotlcoch.ger


Script který vrátí všechna slova začínající na "int":

var str="Na itnetwork rozvijim sve developerske schopnosti.";
var n=str.match(/itn\w+/g);
document.write(n);

Výstup:

itnetwork


Script který vrátí všechna slova obsahující "čink" a současně tímto výrazem nezačíná:

var str="činka tyčinka palačinka javor činku tyčinkou";
var n=str.match(/[a-zA-Z0-9._-]+čink\w+/g);
document.write(n);

Výstup:

tyčinka,palačinka,tyčinkou


Script který vrátí všechna slova obsahující "čink" včetně těch slov, která tak začínají:

var str="činka tyčinka palačinka javor činku tyčinkou";
var n=str.match(/[a-zA-Z0-9._-]+čink\w+|čink\w+/g);
document.write(n);

Výstup:

činka,tyčinka,palačinka,činku,tyčinkou