String length String slice() String substring() String substr() String replace() String replaceAll() String toUpperCase() String toLowerCase() String concat() String trim() String trimStart() String trimEnd() String padStart() String padEnd() String charAt() String charCodeAt() String split()
Metody hledání řetězců jsou popsány v další kapitole.
Vlastnost length
vrací délku řetězce:
let text = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
let length = text.length;
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<h2>The length Property</h2>
<p>The length of the string is:</p>
<p id="demo"></p>
<script>
let text = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
document.getElementById("demo").innerHTML = text.length;
</script>
</body>
</html>
Existují 3 způsoby, jak extrahovat část řetězce:
slice(start, end)
substring(start, end)
substr(start, length)
slice()
extrahuje část řetězce a vrátí extrahovaná část v novém řetězci.
Metoda má 2 parametry: počáteční polohu a koncovou polohu (konec není zahrnut).
Odřízněte část řetězce z pozice 7 do pozice 13:
let text = "Apple, Banana, Kiwi";
let part = text.slice(7, 13);
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<h2>The slice() Method</h2>
<p>The sliced (extracted) part of the string is:</p>
<p id="demo"></p>
<script>
let text = "Apple, Banana, Kiwi";
let part = text.slice(7,13);
document.getElementById("demo").innerHTML = part;
</script>
</body>
</html>
JavaScript počítá pozice od nuly.
První pozice je 0.
Druhá pozice je 1.
Pokud vynecháte druhý parametr, metoda rozdělí zbytek řetězce:
let text = "Apple, Banana, Kiwi";
let part = text.slice(7);
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<h2>The slice() Method</h2>
<p>Extract a part of a string from position 7:</p>
<p id="demo"></p>
<script>
let text = "Apple, Banana, Kiwi";
let part = text.slice(7)
document.getElementById("demo").innerHTML = part;
</script>
</body>
</html>
Pokud je parametr záporný, pozice se počítá od konce řetězce:
let text = "Apple, Banana, Kiwi";
let part = text.slice(-12);
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<h2>The slice() Method</h2>
<p>Extract a part of a string counting from the end:</p>
<p id="demo"></p>
<script>
let text = "Apple, Banana, Kiwi";
let part = text.slice(-12);
document.getElementById("demo").innerHTML = part;
</script>
</body>
</html>
Tento příklad vyřízne část řetězce z pozice -12 do pozice -6:
let text = "Apple, Banana, Kiwi";
let part = text.slice(-12, -6);
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<h2>The slice() Method</h2>
<p>Extract a part of a string and return the extracted parts in a new string:</p>
<p id="demo"></p>
<script>
let text = "Apple, Banana, Kiwi";
let part = text.slice(-12,-6)
document.getElementById("demo").innerHTML = part;
</script>
</body>
</html>
substring()
je podobný slice()
.
Rozdíl je v tom, že počáteční a koncové hodnoty menší než 0 jsou považovány za 0 palců substring()
.
let str = "Apple, Banana, Kiwi";
let part = str.substring(7, 13);
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript String Methods</h1>
<p>The substring() method extract a part of a string and returns the extracted parts in a new string:</p>
<p id="demo"></p>
<script>
let str = "Apple, Banana, Kiwi";
document.getElementById("demo").innerHTML = str.substring(7,13);
</script>
</body>
</html>
Pokud vynecháte druhý parametr, substring()
rozdělí zbytek tětiva.
substr()
je podobný slice()
.
Rozdíl je v tom že druhý parametr určuje délku extrahované části.
let str = "Apple, Banana, Kiwi";
let part = str.substr(7, 6);
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript String Methods</h1>
<p>The substr() method extract a part of a string
and returns the extracted parts in a new string:</p>
<p id="demo"></p>
<script>
let str = "Apple, Banana, Kiwi";
document.getElementById("demo").innerHTML = str.substr(7,6);
</script>
</body>
</html>
Pokud vynecháte druhý parametr, substr()
rozdělí zbytek tětiva.
let str = "Apple, Banana, Kiwi";
let part = str.substr(7);
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript String Methods</h1>
<p>The substr() method extract a part of a string and returns the extracted parts in a new string:</p>
<p id="demo"></p>
<script>
let str = "Apple, Banana, Kiwi";
document.getElementById("demo").innerHTML = str.substr(7);
</script>
</body>
</html>
Pokud je první parametr záporný, pozice se počítá od konce tětiva.
let str = "Apple, Banana, Kiwi";
let part = str.substr(-4);
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript String Methods</h1>
<p>The substr() method extract a part of a string and returns the extracted parts in a new string:</p>
<p id="demo"></p>
<script>
let str = "Apple, Banana, Kiwi";
document.getElementById("demo").innerHTML = str.substr(-4);
</script>
</body>
</html>
Metoda replace()
nahradí zadanou hodnotu jinou hodnota v řetězci:
let text = "Please visit Microsoft!";
let newText = text.replace("Microsoft", "W3Schools");
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript String Methods</h1>
<p>Replace "Microsoft" with "W3Schools" in the paragraph below:</p>
<button onclick="myFunction()">Try it</button>
<p id="demo">Please visit Microsoft!</p>
<script>
function myFunction() {
let text = document.getElementById("demo").innerHTML;
document.getElementById("demo").innerHTML =
text.replace("Microsoft","W3Schools");
}
</script>
</body>
</html>
Metoda replace()
nemění řetězec, na kterém je volána.
Metoda replace()
vrací nový řetězec.
Metoda replace()
nahrazuje pouze první shodu
Pokud chcete nahradit všechny shody, použijte regulární výraz s nastaveným příznakem /g. Viz příklady níže.
Ve výchozím nastavení metoda replace()
nahrazuje pouze první shodu:
let text = "Please visit Microsoft and Microsoft!";
let newText = text.replace("Microsoft", "W3Schools");
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript String Methods</h1>
<p>Replace "Microsoft" with "W3Schools" in the paragraph below:</p>
<button onclick="myFunction()">Try it</button>
<p id="demo">Please visit Microsoft and Microsoft!</p>
<script>
function myFunction() {
let text = document.getElementById("demo").innerHTML;
document.getElementById("demo").innerHTML =
text.replace("Microsoft","W3Schools");
}
</script>
</body>
</html>
Ve výchozím nastavení metoda replace()
rozlišuje malá a velká písmena. Psaní MICROSOFT (s velká písmena) nebude fungovat:
let text = "Please visit Microsoft!";
let newText = text.replace("MICROSOFT", "W3Schools");
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript String Methods</h1>
<p>Try to replace "Microsoft" with "W3Schools" in the paragraph below:</p>
<button onclick="myFunction()">Try it</button>
<p id="demo">Please visit Microsoft!</p>
<script>
function myFunction() {
let text = document.getElementById("demo").innerHTML;
document.getElementById("demo").innerHTML =
text.replace("MICROSOFT","W3Schools");
}
</script>
<p>The replace() method is case sensitive. MICROSOFT (with upper-case) will not be replaced.</p>
</body>
</html>
Chcete-li nahradit malá a velká písmena, použijte regulární výraz s příznakem /i
(necitlivé):
let text = "Please visit Microsoft!";
let newText = text.replace(/MICROSOFT/i, "W3Schools");
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript String Methods</h1>
<p>Replace "Microsoft" with "W3Schools" in the paragraph below:</p>
<button onclick="myFunction()">Try it</button>
<p id="demo">Please visit Microsoft!</p>
<script>
function myFunction() {
let text = document.getElementById("demo").innerHTML;
document.getElementById("demo").innerHTML =
text.replace(/MICROSOFT/i,"W3Schools");
}
</script>
</body>
</html>
Regulární výrazy se píší bez uvozovek.
Chcete-li nahradit všechny shody, použijte regulární výraz s příznakem /g
(globální shoda):
let text = "Please visit Microsoft and Microsoft!";
let newText = text.replace(/Microsoft/g, "W3Schools");
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript String Methods</h1>
<p>Replace all occurrences of "Microsoft" with "W3Schools" in the paragraph below:</p>
<button onclick="myFunction()">Try it</button>
<p id="demo">Please visit Microsoft and Microsoft!</p>
<script>
function myFunction() {
let text = document.getElementById("demo").innerHTML;
document.getElementById("demo").innerHTML =
text.replace(/Microsoft/g,"W3Schools");
}
</script>
</body>
</html>
Mnohem více o regulárních výrazech se dozvíte v kapitole JavaScript Regular Výrazy.
V roce 2021 zavedl JavaScript metodu řetězce replaceAll()
:
text = text.replaceAll("Cats","Dogs");
text = text.replaceAll("cats","dogs");
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<h2>The replaceAll() Method</h2>
<p>ES2021 intoduced the string method replaceAll().</p>
<p id="demo"></p>
<script>
let text = "I love cats. Cats are very easy to love. Cats are very popular."
text = text.replaceAll("Cats","Dogs");
text = text.replaceAll("cats","dogs");
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
Metoda replaceAll()
umožňuje zadat a regulární výraz místo řetězce, který má být nahrazen.
Pokud je parametrem regulární výraz, musí být nastaven globální příznak (g), jinak je vyvolána chyba TypeError.
text = text.replaceAll(/Cats/g,"Dogs");
text = text.replaceAll(/cats/g,"dogs");
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<h2>The replaceAll() Method</h2>
<p>ES2021 intoduced the string method replaceAll().</p>
<p id="demo"></p>
<script>
let text = "I love cats. Cats are very easy to love. Cats are very popular";
text = text.replaceAll(/Cats/g,"Dogs");
text = text.replaceAll(/cats/g,"dogs");
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
replaceAll()
je funkce ES2021.
replaceAll()
v aplikaci Internet Explorer nefunguje.
Řetězec se převede na velká písmena pomocí toUpperCase()
:
Řetězec se převede na malá písmena pomocí toLowerCase()
:
let text1 = "Hello World!";
let text2 = text1.toUpperCase();
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript String Methods</h1>
<p>Convert string to upper case:</p>
<button onclick="myFunction()">Try it</button>
<p id="demo">Hello World!</p>
<script>
function myFunction() {
let text = document.getElementById("demo").innerHTML;
document.getElementById("demo").innerHTML =
text.toUpperCase();
}
</script>
</body>
</html>
let text1 = "Hello World!"; // String
let text2 = text1.toLowerCase(); // text2 is text1
converted to lower
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript String Methods</h1>
<p>Convert string to lower case:</p>
<button onclick="myFunction()">Try it</button>
<p id="demo">Hello World!</p>
<script>
function myFunction() {
let text = document.getElementById("demo").innerHTML;
document.getElementById("demo").innerHTML =
text.toLowerCase();
}
</script>
</body>
</html>
concat()
spojuje dva nebo více řetězců:
let text1 = "Hello";
let text2 = "World";
let text3 = text1.concat(" ", text2);
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript String</h1>
<h2>The concat() Method</h2>
<p>The concat() method joins two or more strings:</p>
<p id="demo"></p>
<script>
let text1 = "Hello";
let text2 = "World!";
let text3 = text1.concat(" ",text2);
document.getElementById("demo").innerHTML = text3;
</script>
</body>
</html>
Místo operátoru plus lze použít metodu concat()
. Tyto dva řádky dělají totéž:
text = "Hello" + " " + "World!";
text = "Hello".concat(" ", "World!");
Všechny metody řetězce vracejí nový řetězec. Nemění původní řetězec.
Formálně řekl:
Řetězce jsou neměnné: Řetězce nelze měnit, pouze nahrazovat.
Metoda trim()
odstraňuje mezery z obou stran řetězce:
let text1 = " Hello World! ";
let text2 = text1.trim();
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<h2>The trim() Method</h2>
<p id="demo"></p>
<script>
let text1 = " Hello World! ";
let text2 = text1.trim();
document.getElementById("demo").innerHTML =
"Length text1 = " + text1.length + "<br>Length text2 = " + text2.length;
</script>
</body>
</html>
ECMAScript 2019 přidal do JavaScriptu metodu String trimStart()
. <p>Metoda trimStart()
funguje jako trim()
, ale odstraňuje mezery pouze na začátku řetězec.
let text1 = " Hello World! ";
let text2 = text1.trimStart();
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<h2>The trimStart() Method</h2>
<p id="demo"></p>
<script>
let text1 = " Hello World! ";
let text2 = text1.trimStart();
document.getElementById("demo").innerHTML =
"Length text1 = " + text1.length + "<br>Length text2 = " + text2.length;
</script>
</body>
</html>
Řetězec JavaScript trimStart()
je podporován ve všech moderních prohlížečích od ledna 2020:
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
Apr 2018 | Jan 2020 | Jun 2018 | Sep 2018 | May 2018 |
ECMAScript 2019 přidal do JavaScriptu řetězcovou metodu trimEnd()
. <p>Metoda trimEnd()
funguje jako trim()
, ale odstraňuje mezery pouze na konci řetězec.
let text1 = " Hello World! ";
let text2 = text1.trimEnd();
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<h2>The trimEnd() Method</h2>
<p id="demo"></p>
<script>
let text1 = " Hello World! ";
let text2 = text1.trimEnd();
document.getElementById("demo").innerHTML =
"Length text1 = " + text1.length + "<br>Length text2 = " + text2.length;
</script>
</body>
</html>
Řetězec JavaScript trimEnd()
je podporován ve všech moderních prohlížečích od ledna 2020:
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
Apr 2018 | Jan 2020 | Jun 2018 | Sep 2018 | May 2018 |
ECMAScript 2017 přidal do JavaScriptu dvě nové metody řetězců: padStart()
a padEnd()
pro podporu odsazení na začátku a na konci řetězce.
Metoda padStart()
doplní řetězec od začátku.
Podloží strunu jinou strunou (vícekrát), dokud nedosáhne dané délky.
Vložte řetězec "0", dokud nedosáhne délky 4:
let text = "5";
let padded = text.padStart(4,"0");
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<h2>The padStart() Method</h2>
<p>The padStart() method pads a string from the start.</p>
<p>It pads the string with another string (multiple times) until it reaches a given length.</p>
<p id="demo"></p>
<script>
let text = "5";
text = text.padStart(4,"0");
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
Vložte řetězec s "x", dokud nedosáhne délky 4:
let text = "5";
let padded = text.padStart(4,"x");
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<h2>The padStart() Method</h2>
<p>The padStart() method pads a string from the start.</p>
<p>It pads the string with another string (multiple times) until it reaches a given length.</p>
<p id="demo"></p>
<script>
let text = "5";
document.getElementById("demo").innerHTML = text.padStart(4,"x");
</script>
</body>
</html>
Metoda padStart()
je řetězcová metoda.
Chcete-li zapsat číslo, převeďte nejprve číslo na řetězec.
Viz příklad níže.
let numb = 5;
let text = numb.toString();
let padded = text.padStart(4,"0");
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<h2>The padStart() Method</h2>
<p>The padStart() method pads a string from the start.</p>
<p>It pads the string with another string (multiple times) until it reaches a given length.</p>
<p id="demo"></p>
<script>
let numb = 5;
let text = numb.toString();
document.getElementById("demo").innerHTML = text.padStart(4,0);
</script>
</body>
</html>
padStart()
je funkce ECMAScript 2017.
Je podporován ve všech moderních prohlížečích:
Chrome | Edge | Firefox | Safari | Opera |
Yes | Yes | Yes | Yes | Yes |
padStart()
není v Internet Exploreru podporována.
Metoda padEnd()
doplní řetězec od konce.
Podloží strunu jinou strunou (vícekrát), dokud nedosáhne dané délky.
let text = "5";
let padded = text.padEnd(4,"0");
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<h2>The padEnd() Method</h2>
<p>The padEnd() method pads a string at the end.</p>
<p>It pads the string with another string (multiple times) until it reaches a given length.</p>
<p id="demo"></p>
<script>
let text = "5";
text = text.padEnd(4,"0");
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
let text = "5";
let padded = text.padEnd(4,"x");
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<h2>The padEnd() Method</h2>
<p>The padEnd() method pads a string at the end.</p>
<p>It pads the string with another string (multiple times) until it reaches a given length.</p>
<p id="demo"></p>
<script>
let text = "5";
document.getElementById("demo").innerHTML = text.padEnd(4,"x");
</script>
</body>
</html>
Metoda padEnd()
je řetězcová metoda.
Chcete-li zapsat číslo, převeďte nejprve číslo na řetězec.
Viz příklad níže.
let numb = 5;
let text = numb.toString();
let padded = text.padEnd(4,"0");
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<h2>The padEnd() Method</h2>
<p>The padEnd() method pads a string at the end.</p>
<p>It pads the string with another string (multiple times) until it reaches a given length.</p>
<p id="demo"></p>
<script>
let numb = 5;
let text = numb.toString();
document.getElementById("demo").innerHTML = text.padEnd(4,"x");
</script>
</body>
</html>
padEnd()
je funkce ECMAScript 2017.
Je podporován ve všech moderních prohlížečích:
Chrome | Edge | Firefox | Safari | Opera |
Yes | Yes | Yes | Yes | Yes |
padEnd()
není v Internet Exploreru podporována.
Existují 3 metody pro extrakci řetězcových znaků:
charAt(pozice)
charCodeAt(pozice)
Přístup k nemovitosti [ ]
Metoda charAt()
vrací znak v zadané hodnotě index (pozice) v řetězci:
let text = "HELLO WORLD";
let char = text.charAt(0);
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript String</h1>
<h2>The charAt() Method</h2>
<p>The charAt() method returns the character at a given position in a string:</p>
<p id="demo"></p>
<script>
var text = "HELLO WORLD";
document.getElementById("demo").innerHTML = text.charAt(0);
</script>
</body>
</html>
Metoda charCodeAt()
vrací unicode znaku na zadaném indexu v řetězci:
Metoda vrací kód UTF-16 (celé číslo mezi 0 a 65535).
let text = "HELLO WORLD";
let char = text.charCodeAt(0);
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript String</h1>
<h2>The charCodeAt() Method</h2>
<p>The charCodeAt() method returns the unicode of the character at a given position in a string:</p>
<p id="demo"></p>
<script>
let text = "HELLO WORLD";
document.getElementById("demo").innerHTML = text.charCodeAt(0);
</script>
</body>
</html>
ECMAScript 5 (2009) umožňuje přístup k vlastnosti [ ] na řetězcích:
let text = "HELLO WORLD";
let char = text[0];
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<p>Property access on strings:</p>
<p>The first character in the string is:</p>
<p id="demo"></p>
<script>
let text = "HELLO WORLD";
document.getElementById("demo").innerHTML = text[0];
</script>
</body>
</html>
Přístup k nemovitosti může být trochu nepředvídatelný:
Díky tomu řetězce vypadají jako pole (ale nejsou)
Pokud není nalezen žádný znak, [ ] vrátí nedefinováno, zatímco charAt() vrátí prázdný řetězec.
Je pouze pro čtení. str[0]="A" nehlásí žádnou chybu (ale nefunguje!)
let text = "HELLO WORLD";
text[0] = "A"; // Gives no error, but does not work
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<p>Property acces on strings are read only:</p>
<p id="demo"></p>
<script>
let text = "HELLO WORLD";
text[0] = "A"; // Does not work
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
Pokud chcete s řetězcem pracovat jako s polem, můžete jej převést na pole.
Řetězec lze převést na pole pomocí metody split()
:
text.split(",") // Split on commas
text.split(" ") // Split on spaces
text.split("|") // Split on pipe
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript String Methods</h1>
<p>Display the first array element, after a string split:</p>
<p id="demo"></p>
<script>
let text = "a,b,c,d,e,f";
const myArray = text.split(",");
document.getElementById("demo").innerHTML = myArray[0];
</script>
</body>
</html>
Pokud je oddělovač vynechán, vrácené pole bude obsahovat celý řetězec v indexu [0].
Pokud je oddělovač "", vrácené pole bude pole single postavy:
text.split("")
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript String Methods</h1>
<h2>The split().Method</h2>
<p id="demo"></p>
<script>
let text = "Hello";
const myArr = text.split("");
text = "";
for (let i = 0; i < myArr.length; i++) {
text += myArr[i] + "<br>"
}
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
Úplnou referenci String naleznete na naší stránce:
Kompletní reference JavaScriptového řetězce.
Odkaz obsahuje popisy a příklady všech vlastností a metod řetězců.